匹配指定的整数

时间:2015-08-03 09:13:15

标签: mysql sql regex

我有以下正则表达式:

1|2|3|4|5|6

它是一个SQL部分,我想只匹配那6个ID。问题是这个正则表达式也匹配11,12,13,14,15,16,23等整数。

如何形成正则表达式以仅匹配那6个特定整数?

2 个答案:

答案 0 :(得分:0)

为了使用“更短”的查询,您可以使用REGEXP的字符类进行交替:

SELECT * FROM table WHERE id REGEXP '^([1-6]|23)$'

字符类[1-6]匹配16的数字,|用于列出其他替代字符。使用(...)进行分组会使锚点^(字符串的开头)和$(字符串的结尾)适用于所有可能的替代方案。

如果单独传递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