1
我使用SQL,需要检查是否字符串包含一定子使用正则表达式。允许使用大小写字母和空格。SQL正则表达式,如果字符串包含一定子
目前,我有 其中描述= '/^[A-ZA-Z \ S] mysubstring [A-ZA-Z \ S] $ /'
但它不工作了一段原因。任何想法?
我使用SQL,需要检查是否字符串包含一定子使用正则表达式。允许使用大小写字母和空格。SQL正则表达式,如果字符串包含一定子
目前,我有 其中描述= '/^[A-ZA-Z \ S] mysubstring [A-ZA-Z \ S] $ /'
但它不工作了一段原因。任何想法?
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%'
您正在使用哪个RDMS? – trincot
它看起来像你没有正确使用模式。它应该看起来像'WHERE description REGEXP'^ [[:alpha:] [:space:]] * mysubstring [[:alpha:] [:space:]] * $'' –
您可以简单地使用LIKE语句来检查子字符串 – sumit