我有以下正则表达式:
1|2|3|4|5|6
这是一个 SQL 部分,我只想匹配这 6 个 id。问题是这个正则表达式还匹配 11、12、13、14、15、16、23 等整数。
如何形成正则表达式以仅匹配这 6 个特定整数?
最佳答案
为了使用“更短”的查询,您可以使用带有 REGEXP
的字符类交替:
SELECT * FROM table WHERE id REGEXP '^([1-6]|23)$'
字符类[1-6]
匹配从1
到6
的数字,并使用|
列出其他替代方案。使用 (...)
分组使得 anchor ^
(字符串开头)和 $
(字符串结尾)适用于所有可能的替代方案。
如果您的 id 是单独传递的并且正则表达式是动态创建的,则只需使用交替:
^(23|6|5|4|3|2|1)$
但是,如果您只有一小部分 id,则最好使用 OR
语法列出您的替代方案,因为非正则表达式解决方案消耗的资源较少。
关于mysql - 匹配指定的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31783555/