SQL正则表达式检查字符串是否包含特定子串。

4

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

目前,我的代码如下:

Where description = '/^[a-zA-Z\s]mysubstring[a-zA-Z\s]$/'

但是它似乎无法正常工作。有什么想法吗?


你使用哪个关系型数据库管理系统? - trincot
看起来你没有正确使用这个模式。它应该像这样:WHERE description REGEXP '^[[:alpha:][:space:]]*mysubstring[[:alpha:][:space:]]*$' - Wiktor Stribiżew
你可以简单地使用LIKE语句来检查子字符串。 - sumit
@sumit:WHERE description LIKE '%mysubstring%'将找到可能包含更多内容而不仅仅是字母和空格的条目。Ke Zhang,请检查哪种方法最适合您。 - Wiktor Stribiżew
1个回答

5
MySQL正则表达式不支持与PHP PCRE正则表达式相同的语法。如果您想使用正则表达式检查,必须使用REGEXP操作符。此外,它不支持\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%'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接