我有一个非常简单的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_id
6。
主键全部连续成千上万。
我的模式中阻止award id
1&的错误是什么? award id
3显示在结果中?
谢谢!
答案 0 :(得分:4)
你根本不应该使用正则表达式。 award_id
为BIGINT
,因此请使用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
。