我已经将json数据保存在mysql数据库列中,如下所示


  [{“ one”:“ mg道路规划编号711 xyz”},{“ two”:“ dc道路规划编号711 xyz”}}]


对于所有具有不同地址的记录,将存储上述类似的json数据。所以我想做的是,我想搜索所有拥有mg公路地址的客户。

因此,我尝试了JSON_SEARCH和JSON_CONTAINS,但是即使表中有2条记录,它也始终没有返回记录。所以我要去哪里错了。

SELECT * FROM `tbl_clients_data` WHERE JSON_SEARCH(reci_address,'all', "mg road")


SELECT * FROM `tbl_clients_data` WHERE JSON_CONTAINS(reci_address, 'mg road', '$.one')

最佳答案

只需尝试以下代码:

SELECT * FROM `tbl_clients_data` WHERE JSON_EXTRACT(reci_address, '$[*].one')
LIKE 'mg road%' OR JSON_EXTRACT(reci_address, '$[*].two') LIKE 'mg road%'


JSON_EXTRACT从JSON文档中提取数据。从与路径参数匹配的部分中选择提取的数据。返回所有匹配的值;要么作为单个匹配值,要么作为参数可以返回多个值,结果将按照匹配顺序自动包装为数组。

关于mysql - 如何检查mysql DB列是否具有对象的json数组并包含特定的字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59452222/

10-11 13:33