我试图通过检查其中一个字段中的json是否包含特定ID来从我的数据库中获取行。
Example: col(kats): [2,4,7,9]
我正在尝试使用以下查询
SELECT column FROM table WHERE column REGEXP '(\[|\,)1(\]|\,)'
问题:MySQL为表中的每一行返回1。 在此先感谢您的任何建议!
答案 0 :(得分:0)
MySQL要求任何文字反斜杠\
字符(REGEXP
字符串中的字面值作为以下[]
的转义字符)才能自行转义。因此,您必须将[]
双倍转义为\\[
和\\]
。
因为MySQL在字符串中使用C转义语法(例如,“\ n”表示换行符),所以必须将在REGEXP字符串中使用的任何“\”加倍。
除了逗号,
不需要转义外,其余模式基本上都是正确的。
> SELECT '[2,4,7,9]' REGEXP '(\\[|,)1(\\]|,)';
+--------------------------------------+
| '[2,4,7,9]' REGEXP '(\\[|,)1(\\]|,)' |
+--------------------------------------+
| 0 |
+--------------------------------------+
1 row in set (0.00 sec)
> SELECT '[2,4,7,9]' REGEXP '(\\[|,)2(\\]|,)';
+--------------------------------------+
| '[2,4,7,9]' REGEXP '(\\[|,)2(\\]|,)' |
+--------------------------------------+
| 1 |
+--------------------------------------+
1 row in set (0.00 sec)