带有数组的 MySQL WHERE 子句包含键



我有一个表,其中一列包含作为varchar字段(字符串(的值数组。

示例:名为"类别"的列在第 1 行中具有字符串值"1,2,3",在第 2 行中具有字符串值"4,5,6"。

我想使用 WHERE 子句,它允许我选择"类别"字段包含键值 2 的行(即第一行(。

如何使用MySQL完成此操作?

我想这可以通过某种模式匹配解决方法来完成,但是有没有一种类似于"IN 数组"语句的更干净的方法?(也许是利用STRING_SPLIT的东西(

PS:不要问这是否是一种好的做法。我在问如何完成它。

使用Find_in_set()函数。

SELECT * 
FROM your_table_name 
WHERE FIND_IN_SET('2', categories) > 0

PS:你真的应该避免在单个字段中存储逗号分隔的列表。像Find_in_set()这样的字符串操作函数效率低下。您确实应该寻求规范化数据库结构。

最新更新