MYSQL 在数组数据集中查找

标签 mysql json

我有一个如下所示的数据库(遗憾的是无法更改)

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, 
                        '[', ''), 
                      ']',''))

SQLFiddle

请引用this question 对于相同的场景。

关于MYSQL 在数组数据集中查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45767566/

相关文章:

java - PreparedStatement "eats"我的行结尾

MySQL 查询选择分组依据中的计数

mysql - 通过 firstName 和 lastName 列搜索所有相似记录的 SQL 查询

php - 使用 PHP 对下拉表中的 SQL 查询进行排序

javascript - JSON 数据没有响应

MySQL:如何避免用户看到我有其他数据库并授予对一个数据库上的一个 View 的选择访问权限?

jquery - 动态创建的外部事件不可拖动

javascript - jquery 回调和 json 数据

jquery - json数据中可以有group by吗?

python - 将 JSON 字符串转换回数组