SQL模式处于类似状态

问题描述

简单问题:

我有如下字段(路径):

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 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}(/|$)'