mysql - 匹配指定的整数

标签 mysql sql regex

我有以下正则表达式:

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]匹配从16的数字,并使用|列出其他替代方案。使用 (...) 分组使得 anchor ^ (字符串开头)和 $ (字符串结尾)适用于所有可能的替代方案。

如果您的 id 是单独传递的并且正则表达式是动态创建的,则只需使用交替:

^(23|6|5|4|3|2|1)$

但是,如果您只有一小部分 id,则最好使用 OR 语法列出您的替代方案,因为非正则表达式解决方案消耗的资源较少。

关于mysql - 匹配指定的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31783555/

相关文章:

mysql - 仅当我有不同的 ID 时如何求和?

javascript - 使用正则表达式验证 img url

c# - 如何防止用户生成的 SQL 查询中的 SQL 注入(inject)

View 中的 SQL CTE 与存储过程中的临时表

regex - 如何检测序列与模式的偏差?

php - 不允许选择任何选定值

php - 用于跟踪我的 Web 应用程序中每个操作的数据库逻辑

mysql - 连接语句 MySQL 中的项目总和

sql - 在 SQL 查询中传递参数

SQL:组合表的查询