我有一个非常简单和小的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显示在结果中?谢谢!!
最佳答案
你根本不应该用正则表达式。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
。关于mysql - 使用regexp w/mysql ..时模式错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20343007/