use*_*228 3 regex mysql select
我在使用正则表达式从MySQL表中选择一些结果时遇到了麻烦.
我正在使用此查询
select id, orderid, `desc`
from paymentlog
where `desc` REGEXP '[^.]*(?:_SVD(\d*))[[:>:]]'
Run Code Online (Sandbox Code Playgroud)
它说
#1139- 从正则表达式获得错误'重复 - 运算符操作数无效'
这个正则表达式适用于我的其他编辑/验证器.
任何建议都非常感谢.
MySQL正则表达式不支持Perl-Compatible Regular Expressions的完整语法.
该(?:)分组的语法是不是在MySQL支持.该语法用于无需反向引用的分组.但它在MySQL中并不重要,因为MySQL无论如何都不支持反向引用(与此相关,MySQL没有正则表达式替换函数).
事实上,在你的例子中你不需要任何parens.
正如@ruakh所说,\d不是匹配数字的代码.您需要在MySQL中使用POSIX字符类.
所以你的表达式应如下所示:
where `desc` REGEXP '_SVD[:digit:]*[[:>:]]'
Run Code Online (Sandbox Code Playgroud)
我也遗漏了你,[^.]*因为这个表达无关紧要.您没有匹配字符串的开头,因此即使您在模式的其余部分之前有一个字符,该类的零个字符也会成功匹配..你可能只想在字符串开头有非点字符时匹配,如下所示:
where `desc` REGEXP '^[^.]*_SVD[:digit:]*[[:>:]]'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6520 次 |
| 最近记录: |