我有这样的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%"
但是我得到了无效的值。
一个选项使用 REGEXP
:
SELECT addresses
FROM Addresses
WHERE addresses REGEXP '"address":"N.*","display":".*"' ;
您正在获取空数据,因为json_extract返回 " Nicholas Street, LIDCOMBE, NSW 2141"
表示文本以 double Quote 和 space 开始,因此LIKE "N%"
不起作用。因此最终查询是:
SELECT addresses
FROM Addresses
WHERE JSON_EXTRACT(addresses, '$.display') LIKE "" N%"
在这里测试:http://rextester.com/yvs22096
注意:修改您的喜欢子句。我简单地提到了为什么您要获得零输出