sql like语句不能使用JSON

时间:2018-02-23 08:21:35

标签: mysql json

我有一个像这样的JSON字段。

{"address": "nicholas street, lidcombe, nsw 2141", "display": "Nicholas Street, LIDCOMBE, NSW 2141"}

我想检索从第一个字母开始的地址。例如,如果用户键入“N”,则应检索从N开始的所有地址。我有像这样的SQL语句

    SELECT    addresses
FROM      Addresses
WHERE     JSON_EXTRACT(addresses, '$.display') LIKE "N%"

但我得到一个空值。

2 个答案:

答案 0 :(得分:1)

一个选项使用REGEXP

SELECT addresses
FROM Addresses
WHERE addresses REGEXP '"address":"N.*","display":".*"' ;

答案 1 :(得分:0)

您正在获取NULL数据,因为JSON_EXTRACT返回" Nicholas Street, LIDCOMBE, NSW 2141"表示文本以双引号空格开头,因此LIKE "N%"不起作用。所以最终的查询是:

SELECT    addresses
FROM      Addresses
WHERE     JSON_EXTRACT(addresses, '$.display') LIKE "\" N%"

在此测试:http://rextester.com/YVS22096

注意:修改 LIKE 子句。我只是提到你为什么得到NULL输出