从具有标签的数据库中获取行

时间:2018-10-13 19:41:59

标签: sql database sqlite tags

我在数据库中有标签列,用逗号分隔,例如:“绿色,大,强”。我知道这不是在数据库中存储标签的最佳方法,稍后我将对其进行更改,但是现在我真的需要找出如何获取具有特殊标签的行的方法。 例如,在第一行中,列标记为“绿色,大,强”。第二行是“白色,大,强 y ”。 当我使用

"SELECT * FROM tablename WHERE tags LIKE '%strong%'"

它返回第一列和第二列(由于strong y ),但是我只需要第一列

2 个答案:

答案 0 :(得分:1)

将输出限制为1,如下所示:

SELECT * FROM tablename WHERE tags LIKE '%strong%' LIMIT 1

还可以按特定列(例如ID)排序,如下所示:

SELECT * FROM tablename WHERE tags LIKE '%strong%' ORDER BY column_name LIMIT 1

当与LIKE一起使用时,方括号指定范围。您可以使用ESCAPE关键字。

WHERE mycol LIKE '%\[126\]%' ESCAPE '\';

当然,如果您要尝试匹配一个确切的字符串,则不需要LIKE,或者可以删除%个字符,LIKE的行为类似于=(这使通配符或参数的完全匹配可以灵活地传递)。

答案 1 :(得分:1)

我会这样:

SELECT *
FROM tablename
WHERE ',' || tags || ',' LIKE '%,strong,%';

也就是说,只需添加定界符,这样搜索就不会模棱两可。