我有以下正则表达式:
1|2|3|4|5|6
它是一个SQL部分,我想只匹配那6个ID。问题是这个正则表达式也匹配11,12,13,14,15,16,23等整数。
如何形成正则表达式以仅匹配那6个特定整数?
答案 0 :(得分:0)
为了使用“更短”的查询,您可以使用REGEXP
的字符类进行交替:
SELECT * FROM table WHERE id REGEXP '^([1-6]|23)$'
字符类[1-6]
匹配1
到6
的数字,|
用于列出其他替代字符。使用(...)
进行分组会使锚点^
(字符串的开头)和$
(字符串的结尾)适用于所有可能的替代方案。
如果单独传递id并动态创建正则表达式,只需使用交替:
^(23|6|5|4|3|2|1)$
但是,如果您有一小部分ID,则最好使用OR
语法列出您的备选方案,因为非正则表达式解决方案的资源消耗较少。
答案 1 :(得分:0)
你也可以使用:
SELECT * FROM table WHERE id IN (1,2,3,4,5,6);
您明确要使用REGEXP的原因是什么? 10次中有9次有更好的解决方案而不是REGEXP