Sql 模式相似

Sql pattern in like condition

简单的问题:

我有如下字段(路径):

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

只有 SQL 服务器支持在 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}(/|$)'