2017-08-19 49 views
0

我有一个看起来像这样的数据库(可惜不能更改)MYSQL查找在集与阵列数据

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

我想选择与8的分配每个表单,所以我尝试这样做:

SELECT * FROM patients WHERE FIND_IN_SET(patients, 8)

但它不工作,我想在一个示例数据库另一个测试,如果[]被删除它工作得很好,可惜[]能未在现场数据库中删除(此数据是从JSON字符串化)

+0

我认为你需要https://stackoverflow.com/questions/27448897/mysql-query-where-column-is-in-json-array#37838101但为此,你需要mysql 5.7+版本。在mysqk 5.6或minor中不起作用。 –

回答

1

您可以使用REPLACE()使用公司FIND_IN_SET前脱光[]支架。

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

SQLFiddle

请参阅this question其他情况相同。

+0

这是否修改数据库中的值? – Jordash

+0

@Jordash不,它不应该。 – Rohan