我有一个如下所示的数据库(遗憾的是无法更改)
patients (table)
name | companies
-----------------------
Form 1 | [8,3]
Form 2 | [8]
我想选择每个分配为 8 的表单,所以我尝试了以下方法:
从患者中选择 * WHERE FIND_IN_SET(患者,8)
但它不起作用,我在示例数据库中尝试了另一个测试,如果删除 [
和 ]
,它就可以正常工作,不幸的是 [
和 ]
无法在实时数据库中删除(此数据是从 JSON 字符串化的)
最佳答案
您可以使用REPLACE()在 FIND_IN_SET
中使用公司之前去除 [
和 ]
括号。
SELECT *
FROM patients
WHERE FIND_IN_SET(8, REPLACE(
REPLACE(
companies,
'[', ''),
']',''))
请引用this question 对于相同的场景。
关于MYSQL 在数组数据集中查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45767566/