我有一个非常简单和小的mysql表。

award_id bigint(11) primary key auto_inc
award_receip varchar(160) NULL
date_receip DATETIME NOT NULL

当我进行以下查询时,没有得到预期的结果。
SELECT * FROM awards WHERE award_id REGEXP '("1|6|3")'

结果集中只有award_id6。
主键都是连续的。
我的模式中有什么错误阻止award id1和award id3显示在结果中?
谢谢!!

最佳答案

你根本不应该用正则表达式。award_idBIGINT,因此使用IN

SELECT * FROM awards WHERE award_id IN (1,6,3);

为了完整起见,如果一个人有足够的虐待狂来使用正则表达式,那么许多可能的模式中有两种:
SELECT * FROM awards WHERE award_id RLIKE '^(1|6|3)$';
SELECT * FROM awards WHERE (award_id LIKE '1' OR award_id LIKE '6' OR award_id LIKE '3');

但是,不要用那些,只要用IN

关于mysql - 使用regexp w/mysql ..时模式错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20343007/

10-11 22:00
查看更多