搜索mysql列中存在的精确字符串

332nm8kg  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(294)

我使用below-sql查询数据库中的搜索值,但是当我搜索'study'时,它也会返回'caese study'、'get study materials'值。如何使用查询搜索字符串列中的精确包含?
$names='研究';“名称”列有逗号分隔的值,例如:“study,,new”,所以我也需要在其中搜索

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

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

我尝试以上两个问题,但没有工作预期,请建议?

mrwjdhj3

mrwjdhj31#

不应在列中存储逗号分隔的值。您应该使用连接/关联表。如果可以的话,应该修复数据模型。
然而,有时我们无法控制别人真正糟糕的决定。mysql有 find_in_set() :

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

注意,我已经替换了常量 $names 使用参数。您应该学会使用参数将值传递到查询中。

相关问题