在mysql json列中搜索

时间:2019-07-06 12:01:06

标签: php mysql json

我有一列包含json数据,

{
"city":"\u0628\u063a\u062f\u0627\u062f",
"town":"\u0627\u0644\u0627\u0639\u0638\u0645\u064a\u0629",
"queue":"316",
"lane":"22",
"home":"15"
}

如何搜索表格中的对象(城镇)? 我尝试过

$query ="SELECT * FROM tabel WHERE JSON_CONTAINS(colom_name,'town') like  '%$Word%'  order by id DESC";

也完全没有结果

2 个答案:

答案 0 :(得分:0)

我们在一个项目中使用JSON字段,例如,我们在一个列中拥有与用户相关的所有内容,简称为JSON。因此,为了更轻松地搜索特定用户,我们使用JSON_EXTRACT。因此,对于您的示例,您可以这样做:

SELECT * FROM Table_Name WHERE JSON_EXTRACT(<json_column>,'$.town') LIKE '%something%'

您甚至可以通过这样操作来获得城镇名称或城市:

SELECT JSON_EXTRACT(<json_column>,'$.<filed_from_json>') FROM Table_Name WHERE JSON_EXTRACT(<json_column>,'$.town') LIKE '%something%'

BR

答案 1 :(得分:-1)

您不必使用JSON_CONTAINS函数。
在文档中:

  

JSON_CONTAINS()函数测试是否在给定的JSON文档中或者在文档中的指定路径中找到指定的值

您没有json文档,但有普通列。
您的SQL查询应为:

$query ="SELECT * FROM tabel WHERE town like '%$Word%' order by id DESC";