MySQL,使用 find_in_set 返回的行没有按预期工作

标签 mysql filter find-in-set

我正在尝试运行以下 MySQL 命令:

SELECT ID, intervention_post_title, linked_article FROM wp_cpt_combined WHERE FIND_IN_SET (72, habitat_type)

在我的数据库中,habitat_type 列(因为这是一个多选字段)将值存储为“

id  habitat_type
1   [72, 74]
2   [70]
3   [71]

上面的 sql 命令没有返回任何行——我错过了什么?我需要能够使用 find_in_set (72, habitat_type) 或 find_in_set (74, habitat_type) 等拉回第 1 行。我是否必须进行替换以删除方括号?

如有任何帮助,我们将不胜感激。

D.

最佳答案

  • 您可以使用 REPLACE()函数用空字符串替换出现的 []

尝试以下操作:

SELECT 
  ID, 
  intervention_post_title, 
  linked_article 
FROM wp_cpt_combined 
WHERE FIND_IN_SET ('72', REPLACE(REPLACE(habitat_type, '[', ''), ']', ''))

关于MySQL,使用 find_in_set 返回的行没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52816059/

相关文章:

php - Mysql JOIN 表带有首选项和 GROUP BY

php - 一对多关系 - 仅显示第一行

php - 根据用户输入的第一个字符返回 PDO 查询

MySQL UUID_SHORT() 给出错误 Out of range value for column

mysql - where_in 和 find_in_set 之间的区别

mysql - FIND_IN_SET sql 查询

php - 插入外键正确的sql执行

ios - 从字典数组中搜索结果的最佳方法

python - 如何通过 bool 列过滤 Spark 数据帧?

Excel 简单公式仅适用于筛选结果