我有一个看起来像这样的数据库(遗憾的是无法更改)
patients (table)
name | companies
-----------------------
Form 1 | [8,3]
Form 2 | [8]
我想选择分配为8的每个表单,所以我尝试了这个:
SELECT * FROM patients WHERE FIND_IN_SET(patients, 8)
但是它不起作用,我在示例数据库中尝试了另一个测试,如果删除了[
和]
,它就可以正常运行,不幸的是[
和]
无法在实时数据库中删除(此数据是从JSON中字符串化的)
答案 0 :(得分:1)
在[
中使用公司之前,您可以使用REPLACE()删除]
和FIND_IN_SET
括号。
SELECT *
FROM patients
WHERE FIND_IN_SET(8, REPLACE(
REPLACE(
companies,
'[', ''),
']',''))
请参阅this question 了解相同的情况。