gpt4 book ai didi

MySQL "like"(误报)

转载 作者:可可西里 更新时间:2023-11-01 06:56:51 27 4
gpt4 key购买 nike

我的数据库中有一个表,其中有一个名为“tags”的字段,例如iOS、Android、Java、JavaScript 等。我想选择此表中的所有项目,这些项目与某些标签相匹配,例如

id | name | tags

-- | ------- | -----

1 | name1 | iOS,Android

2 | name2 | JavaScript,CSS

3 | name3 | HTML,Java

现在,如果我只想要标签为“Java”的项目(只有 id=3 的项目),我会这样做:

SELECT * FROM posts WHERE tags LIKE '%Java%';

但是,正如您想象的那样,它返回了第二个 (JavaScript) 和第三个 (Java) 项目..

如何只返回第三个?

最佳答案

在 MySQL 中,最好的解决方案是 find_in_set():

SELECT *
FROM posts
WHERE find_in_set('Java', tags) > 0;

在 MySQL 和其他数据库中,您也可以使用 like 来执行此操作,但是您需要在所有内容之间加上分隔符:

SELECT *
FROM posts
WHERE concat(',', tags, ',') like '%,Java,%';

分隔符可防止与相似标签混淆(嗯,不涉及逗号的混淆)。

关于MySQL "like"(误报),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17779154/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com