首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL的正则表达式总是返回1

MySQL的正则表达式总是返回1
EN

Stack Overflow用户
提问于 2015-06-12 15:31:44
回答 1查看 200关注 0票数 1

我试图从数据库中获取行,方法是检查其中一个字段中的json是否包含特定的id。

Example: col(kats): [2,4,7,9]

我试图通过使用以下查询来实现这一点

代码语言:javascript
复制
SELECT column FROM table WHERE column REGEXP '(\[|\,)1(\]|\,)'

问题: MySQL为表中的每一行返回1。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-12 16:18:00

MySQL要求对任何文本反斜杠\字符(在REGEXP字符串中为转义字符作为转义字符到以下[])进行转义。因此,必须将[]双转义为\\[\\].

从医生那里:

因为MySQL在字符串中使用C转义语法(例如,“\n”来表示换行符),所以必须加倍在REGEXP字符串中使用的任何“\”。

您的模式的其余部分基本上是正确的,只是逗号,不需要转义。

1不匹配:

代码语言:javascript
复制
> SELECT '[2,4,7,9]' REGEXP '(\\[|,)1(\\]|,)';
+--------------------------------------+
| '[2,4,7,9]' REGEXP '(\\[|,)1(\\]|,)' |
+--------------------------------------+
|                                    0 |
+--------------------------------------+
1 row in set (0.00 sec)

但两个人确实匹配

代码语言:javascript
复制
> SELECT '[2,4,7,9]' REGEXP '(\\[|,)2(\\]|,)';
+--------------------------------------+
| '[2,4,7,9]' REGEXP '(\\[|,)2(\\]|,)' |
+--------------------------------------+
|                                    1 |
+--------------------------------------+
1 row in set (0.00 sec)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30806892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档