2017-08-19 51 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