2017-03-04 301 views
1

我使用SQL,需要检查是否字符串包含一定子使用正则表达式。允许使用大小写字母和空格。SQL正则表达式,如果字符串包含一定子

目前,我有 其中描述= '/^[A-ZA-Z \ S] mysubstring [A-ZA-Z \ S] $ /'

但它不工作了一段原因。任何想法?

+0

您正在使用哪个RDMS? – trincot

+0

它看起来像你没有正确使用模式。它应该看起来像'WHERE description REGEXP'^ [[:alpha:] [:space:]] * mysubstring [[:alpha:] [:space:]] * $'' –

+0

您可以简单地使用LIKE语句来检查子字符串 – sumit

回答

3

MySQL的正则表达式是不支持相同的语法PHP PCRE正则表达式。如果你想使用正则表达式检查,你必须使用REGEXP operator。接下来,它不支持\s和其他速记类,您需要用[:space:] POSIX字符类替换它。

此外,默认情况下,MySQL REGEXP将执行不区分大小写的正则表达式检查,但您仍然可以使用[A-Za-z],以防万一您有非标准选项。

使用

WHERE description REGEXP '^[a-zA-Z[:space:]]*mysubstring[a-zA-Z[:space:]]*$' 

如果你不关心什么存在的条目,你只需要找到那些含有你的字符串,使用LIKE%(=任何文本)通配符:

WHERE description LIKE '%mysubstring%' 
相关问题