在mysql

时间:2016-05-03 10:58:48

标签: mysql

我有一个包含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会带来所有。有没有办法在不改变表格的情况下实现这一点。
提前致谢。

2 个答案:

答案 0 :(得分:2)

您应该使用REGEXP
请尝试以下查询:

SELECT * FROM experts 
    WHERE expert_in REGEXP '[[:<:]]1[[:>:]]';

输出:查看SQLFiddle

上的实时演示

注意:您可以根据上面的要求调整搜索字符串REGEXP正在搜索确切的字词。

答案 1 :(得分:1)

如果您可以更改数据(不是表/架构),则应附加并添加另一个逗号,这样您就可以使用where col like "%,123,%"进行搜索,这将始终符合确切的值。否则,您必须使用,?123,?

之类的正则表达式