mysql - 如何在mysql中搜索json数据?

标签 mysql sql json

我有描述字段。该字段为json

描述字段的内容如下:

{
    "address": 
    {
        "street": "street 123", 
        "information": 
        {
            "province": "province 123",
            "regency": "regency 123", 
            "district": "district 123"
        }
    }, 
    "mobileNumber": "123"
}

我想在json数据中搜索省份

我尝试这样:

SELECT * FROM orders WHERE LOWER(JSON_EXTRACT(description, "$.address.information.province")) LIKE "%prov%"

结果为空

如何解决这个问题?

最佳答案

问题是您的 JSON 无效。

后面不能有逗号
"district": "district 123", 

"mobileNumber": "123",

如果您尝试使用有效的 JSON,您将得到预期的结果:

select json_extract('{ "address": { "street": "street 123",         "information": { "province": "province 123",  "regency": "regency 123",             "district": "district 123" } }, "mobileNumber": "123"}', '$.address.information.province')

"province 123"

我创建了一个db-fiddle这似乎适合您的数据:

create table x (id int, description json);
insert into x values(1, '{    "address":     {        "street": "street 123",         "information":         {            "province": "province 123",            "regency": "regency 123",             "district": "district 123"         }    },     "mobileNumber": "123"}');
select * from x where json_extract(description, '$.address.information.province') like '%prov%'

输出

id  description
1   {"address": {"street": "street 123", "information": {"regency": "regency 123", "district": "district 123", "province": "province 123"}}, "mobileNumber": "123"} 

关于mysql - 如何在mysql中搜索json数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49715125/

相关文章:

java - 将嵌套 json 映射到 java 字段,无需写入容器名称

java - 在 Java 中解析 JSON 字符串

mysql - 如何使用带有force选项的mysql source命令

php - 在表中插入新行和自动 ID 号

sql - 有没有办法限制左外连接?

mysql - 像存储过程参数一样使用 SQL LIKE 运算符

javascript - 如何将指定的 JSON 对象值转换为数组

mysql - 从子查询中删除

php - 将 Wordpress 类别添加到数据库,更改仅在通过界面更新后显示

php - 监听 mySQL 数据库中的更改(使用 PHP)