mysql,使用find\ in\ u set返回的行未按预期工作

dba5bblo  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(398)

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

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

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

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

上面的sql命令不返回任何行-我遗漏了什么?我需要能够用find\u in \u set(72,habitat\u type)或find\u in \u set(74,habitat\u type)等将第1排向后拉。我是否必须进行更换才能拆下方括号?
任何帮助都将不胜感激。
d。

7jmck4yq

7jmck4yq1#

你可以用 REPLACE() 函数来替换 [ 以及 ] 使用空字符串。
请尝试以下操作:

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

yr9zkbsy2#

您可以通过移除方括号find in set来实现,例如find in \u set(72,'72,73,74')它将返回位置72,即1,而find in \u set(72,'73,72,74')即2,因此您还可以尝试使用条件运算符find in \u set(72,'72,73')>0

相关问题