【问题标题】:Sql pattern in like condition类似条件的 Sql 模式
【发布时间】:2020-10-12 15:29:43
【问题描述】:

简单的问题:

我有如下字段(路径):

1/2/43
1/2/43/45
1/2/43/45/46

我希望能够得到包含 43/XX 的路径

这里唯一有效的意思是

1/2/43/45

这似乎不起作用

... WHERE path LIKE '%43/[0-9][0-9]%'

【问题讨论】:

  • LIKE 不能与正则表达式一起使用。
  • 用您正在使用的数据库标记您的问题。
  • 字符串函数是高度特定于供应商的。请用您正在运行的数据库标记您的问题:mysql、oracle、sqlserver...?
  • @GordonLinoff MySql

标签: mysql sql string where-clause sql-like


【解决方案1】:

只有 SQL Server 支持将(一小部分)正则表达式与 LIKE 一起使用。在 MySQL 中,您将使用 RLIKEREGEXP(两者都是同义词)。您的情况将翻译为:

WHERE path RLIKE '43/[0-9][0-9]'

这可以用量词缩短:

WHERE path RLIKE '43/[0-9]{2}'

您可能希望更具体一点,确保43 之前的字符是斜杠或字符串的开头:

WHERE path RLIKE '(^|/)43/[0-9]{2}'

同样的约束可以应用到字符串的右边:

WHERE path RLIKE '(^|/)43/[0-9]{2}(/|$)'

【讨论】:

  • WHERE path RLIKE '(^|/)43/[0-9]{2}$' 这正是我想要的,谢谢
猜你喜欢
  • 1970-01-01
  • 2011-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-07
相关资源
最近更新 更多