2017-08-01 55 views
1

我正在开发一个系统,使用mysql REGEXP来查找一些行。
在xampp localhost中,这很好用。
我有这个疑问:mysql REGEXP不工作在网络版

SELECT COUNT(*) FROM users WHERE departments REGEXP '\\D(7|1|2|3|4|5|6)\\D' LIMIT 0, 25 

,并返回符合我REGEXP某些行。

这是必须匹配正则表达式我users表行之一的departments column值:在users表,我上传我的项目文件和数据库[1,3,4,6,7]

用相同的数据库和相同的数据,但它不返回任何值。
我曾经直接在Navicat Premium中测试我的查询,并且它没有返回任何行。
我的本地主机上的mysql版本是4.6.5.2,在我的在线版本是4.6.6。
你觉得我忘了什么吗?
任何意见,建议,表示赞赏。

+0

您是否尝试过没有LIMIT部分? – RealCheeseLord

+0

@RealCheeseLord是的,不作任何改变。 –

回答

2

REGEXP '[^0-9][1-7][^0-9]' 

\D更换你的模式是不支持,你可以在括号表达式使用范围。

图案的详细资料

  • [^0-9] -

如果您需要任何字符,但数字 - 任何字符,但数字

  • [1-7] - 从1一个数字,7
  • [^0-9]也匹配字符串的开始/结尾,使用

    REGEXP '(^|[^0-9])[1-7]($|[^0-9])' 
    

    (^|[^0-9])该组串(^)的开始或任何字符,但一个数字和($|[^0-9])匹配任何非数字或字符串($)的端部相匹配。

  • +1

    它正在工作!非常感谢你。我不知道\ D不支持! (然而,我的正则表达式在我的xampp本地主机中工作!!!!!)。无论如何,你救了我的一天:D谢谢 –

    +0

    @MahyarKhanbabaei PHP使用PCRE正则表达式库,而MySQL'REGEXP'只支持一小部分POSIX正则表达式。 –

    +0

    我现在发现了它。没关系,谢谢。 –