![](/img/trans.png)
[英]How can I CONCAT fields from different independent tables in MySQL?
[英]How I can CONCAT vertical lines from MySQL using PHP
如果有以下问题。 将|
分隔为|
时,无法从MySQL获取值|
我有以下字符串:
SELECT * FROM user WHERE CONCAT(',', category, ',') REGEXP ',(lc_8|swimming),'
并且此字符串仅在我的MySQL category
具有值为lc_8,swimming,
列category
lc_8,swimming,
我如何更改上面的字符串以获得相同的值,但是如果在列中我有lc_8|swimming|
?
|
是正则表达式中的特殊字符。 您需要将其转义,例如\\|
。 尝试:
SELECT * FROM user WHERE CONCAT(',', category, ',') REGEXP ',(lc_8\|swimming),'
需要在正则表达式中转义的字符如下:
* ? + [ ( ) { } ^ $ | \
如果您确实想匹配示例中的括号,则也需要引用它们。
(
和|
在正则表达式中有特殊含义,您需要对它们进行转义。
SELECT *
FROM user
WHERE CONCAT(',', REPLACE(category, '|', '\\|'), ',') REGEXP ',\(lc_8\|swimming\),'
但是,如果要搜索以逗号分隔的列表,则最好使用为此设计的函数:
SELECT * FROM user
WHERE FIND_IN_SET('(lc_8|swimming)', category)
最好不要先存储以逗号分隔的列表,而是将类别放在单独的表中,每个类别一行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.