【问题标题】:SQL regular expression to check if a string contains a certain substringSQL正则表达式检查字符串是否包含某个子字符串
【发布时间】:2017-03-04 20:48:43
【问题描述】:

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

目前,我有 其中描述 = '/^[a-zA-Z\s]mysubstring[a-zA-Z\s]$/'

但由于某种原因它无法正常工作。任何的想法?

【问题讨论】:

  • 您使用的是哪个 RDMS?
  • 您似乎没有正确使用该模式。它应该看起来像 WHERE description REGEXP '^[[:alpha:][:space:]]*mysubstring[[:alpha:][:space:]]*$'
  • 您可以简单地使用 LIKE 语句来检查子字符串
  • @sumit: WHERE description LIKE '%mysubstring%' 将找到可能包含的条目可能不仅仅是字母和空格。 Ke Zhang,请检查最适合您的方法。

标签: mysql sql regex


【解决方案1】:

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%'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 2023-04-01
    • 2011-07-22
    • 2014-03-30
    • 2021-04-24
    相关资源
    最近更新 更多