我在数据库中有标签列,用逗号分隔,例如:“绿色,大,强”。我知道这不是在数据库中存储标签的最佳方法,稍后我将对其进行更改,但是现在我真的需要找出如何获取具有特殊标签的行的方法。 例如,在第一行中,列标记为“绿色,大,强”。第二行是“白色,大,强 y ”。 当我使用
"SELECT * FROM tablename WHERE tags LIKE '%strong%'"
它返回第一列和第二列(由于strong y ),但是我只需要第一列
答案 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,%';
也就是说,只需添加定界符,这样搜索就不会模棱两可。