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

标签 php mysql sql

<分区>

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

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

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

如何使用 MySQL 完成此操作?

我想这可以通过某种模式匹配解决方法来完成,但是是否有一种类似于“IN array”语句的更简洁的方法来完成它? (也许是使用 STRING_SPLIT 的东西)

P.S.:不问这是否是一个好习惯。我在问如何完成它。

最佳答案

使用Find_in_set()功能。

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

PS:您真的应该避免在单个字段中存储逗号分隔的列表。 Find_in_set() 等字符串操作函数效率低下。你真的应该看看normalize您的数据库结构。

关于php - 带有数组的 MySQL WHERE 子句包含键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52768628/

相关文章:

PHP 登录系统 - 当像在数据库中一样登录用户名时,将用户名设置为小

php - 如何在 WordPress 中使用短代码显示 comments_template?

php - 函数中使用的 PDO 范围

mysql - 从多个字段的合并中选择所有不同的值 MySql

c# - 合理的 SQL 超时

sql - 根据列 id(顺序)将所选数据合并到同一行

php - 如何修改 Joomla 2.5 站点的 RSS 提要字段?

php - 通过电子邮件显示输出但不更新数据库中的记录的用户批准

c# - 将条件为 "In"的 SQL 查询转换为 Lambda 表达式

java - 将 GWT 用于 Ajax 网站