搜索确切的字符串存在于mysql列

时间:2018-12-30 15:43:38

标签: php mysql search

我正在使用下面的sql查询来查询db的搜索值,但是当我搜索“ study”时,它也会返回值“ caese-study”,“ get-study-materials”。 如何使用查询来搜索包含字符串列的确切包含内容?

$ names ='study'; 并且名称列具有类似逗号分隔的值,  例如:“研究,abc,新内容”,所以我也需要在其中进行搜索

SELECT * FROM datatitle WHERE  names LIKE '%$names %' ;

SELECT * FROM datatitle WHERE  names regexp '(^|[[:space:]])$names([[:space:]]|$)';

我尝试了上述两个查询,但没有按预期工作,请咨询吗?

1 个答案:

答案 0 :(得分:2)

您不应在列中存储逗号分隔的值。您应该使用联结/关联表。如果可以的话,您应该修复数据模型。

但是,有时我们无法控制其他人的错误决定。 MySQL具有find_in_set()

SELECT dt.*
FROM datatitle dt
WHERE find_in_set(?, names) > 0;

请注意,我已用参数替换了常量$names。您应该学习使用参数将值传递给查询。