快速提问。我有点匆忙,但如果有人能迅速指出我正确的方向,我会非常高兴。
我在db中有一个字段,我们称之为field_a,它返回格式为“20,50,60,80”等的字符串。
我希望进行查询,在此字段中搜索是否存在20。
我可以使用MySQL MATCH还是有更好的方法?
谢谢!
答案 0 :(得分:3)
更好的方法是以不同方式保存数据。使用WHERE a LIKE '...'
和MATCH/AGAINST
(除了相当慢)你不能轻易搜索“20”......如果搜索“20”,你也会得到“200”;如果你搜索“,20”,你就不会得到“20,50”
答案 1 :(得分:2)
使用FIND_IN_SET
:
WHERE FIND_IN_SET(20, field_a) != 0
答案 2 :(得分:1)
请注意,你没有得到你真正想要的子串 - 例如LIKE'%20%'也会匹配'50,120,70'。如果你正在使用MySQL,你可能想要使用REGEXP'[[:<:]] 20 [[:>:]]' - 其中有趣的面孔是字边界标记,它将尊重开头/结尾的断点字符串或逗号,所以你不应该得到任何误报。