MySQL,使用find_in_set返回行未按预期工作

时间:2018-10-15 11:45:11

标签: 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,栖息地类型)或find_in_set(74,栖息地类型)等向后拉第1行。是否必须进行替换才能去除方括号?

任何帮助将不胜感激。

D。

2 个答案:

答案 0 :(得分:0)

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

尝试以下操作:

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

答案 1 :(得分:0)

您可以通过移除方括号来做到这一点 在诸如Find_in_set(72,'72,73,74')之类的集合作品中查找,它将返回72的位置,即1 而find_in_set(72,'73,72,74')即2 因此您也可以尝试使用条件运算符find_in_set(72,'72,73')> 0