MYSQL JSON字段WHERE开头或结尾

时间:2017-01-02 18:25:38

标签: mysql mysql-5.7

'{"city": "Gradystad"}'

此作品

`fields`->'$."city"' LIKE '%stad%' // contains

这不

`fields`->'$."city"' LIKE 'Grady%' // begins with
`fields`->'$."city"' LIKE '%stad' // ends with

为什么呢? &安培;如何解决?

2 个答案:

答案 0 :(得分:0)

检查类似函数字符串上的大写字母。这可能是一个简单的解决方案。

答案 1 :(得分:0)

Laravel在MySQL语法中使用-> JSON选择器语法,如MySQL manual

中所述
mysql> SELECT c, c->"$.id", g
     > FROM jemp
     > WHERE c->"$.id" > 1
     > ORDER BY c->"$.name";
+-------------------------------+-----------+------+
| c                             | c->"$.id" | g    |
+-------------------------------+-----------+------+
| {"id": "3", "name": "Barney"} | "3"       |    3 |
| {"id": "4", "name": "Betty"}  | "4"       |    4 |
| {"id": "2", "name": "Wilma"}  | "2"       |    2 |
+-------------------------------+-----------+------+
3 rows in set (0.00 sec)

但是,它不会添加JSON_UNQUOTE或任何方法来从结果集中删除双引号。由于where子句是通过MySQL评估的(PDO必须在结果集转换中删除它们),我们需要在搜索值中包含额外的"