我已将 json 数据保存在 mysql 数据库列中,如下所示
[{"one":"mg road plot number 711 xyz"},{"two":"dc road plot number 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/