我正在使用SQL,需要使用正则表达式检查字符串是否包含某个子字符串。允许使用大小写字母和大写字母。
目前,我有 where description ='/ ^ [a-zA-Z \ s] mysubstring [a-zA-Z \ s] $ /'
但由于某种原因它不起作用。任何的想法?
答案 0 :(得分: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%'