我有一个包含3列的表格,如下所示,
专家表
id - 1589
name - Jhonny
expert_in - 1,12,8 (Values similar like this)
experts_in包含另一个表的外键
experts_in table
id - 1
expert_in - painting
我希望在搜索专家时能够胜任某些工作的搜索专家
SELECT * FROM `experts` WHERE expert_in LIKE 1%
以上查询为所有专家带来了11,12,13等。我只想要一个确切的词。我知道LIKE会带来所有。有没有办法在不改变表格的情况下实现这一点。
提前致谢。
答案 0 :(得分:2)
您应该使用REGEXP
。
请尝试以下查询:
SELECT * FROM experts
WHERE expert_in REGEXP '[[:<:]]1[[:>:]]';
输出:查看SQLFiddle
上的实时演示注意:您可以根据上面的要求调整搜索字符串REGEXP正在搜索确切的字词。
答案 1 :(得分:1)
如果您可以更改数据(不是表/架构),则应附加并添加另一个逗号,这样您就可以使用where col like "%,123,%"
进行搜索,这将始终符合确切的值。否则,您必须使用,?123,?