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 中,您可以使用 RLIKE
或 REGEXP
(两者都是同义词)。您的条件将翻译为:
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}(/|$)'
简单的问题:
我有如下字段(路径):
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 中,您可以使用 RLIKE
或 REGEXP
(两者都是同义词)。您的条件将翻译为:
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}(/|$)'