MYSQL使用数组数据查找

时间:2017-08-19 04:14:13

标签: mysql json

我有一个看起来像这样的数据库(遗憾的是无法更改)

patients (table)
name    |   companies
-----------------------
Form 1  |     [8,3]
Form 2  |     [8]

我想选择分配为8的每个表单,所以我尝试了这个:

SELECT * FROM patients WHERE FIND_IN_SET(patients, 8)

但是它不起作用,我在示例数据库中尝试了另一个测试,如果删除了[],它就可以正常运行,不幸的是[]无法在实时数据库中删除(此数据是从JSON中字符串化的)

1 个答案:

答案 0 :(得分:1)

[中使用公司之前,您可以使用REPLACE()删除]FIND_IN_SET括号。

SELECT * 
  FROM patients 
 WHERE FIND_IN_SET(8, REPLACE(
                        REPLACE(
                          companies, 
                        '[', ''), 
                      ']',''))

SQLFiddle

请参阅this question 了解相同的情况。