2017-01-02 57 views
3
'{"city": "Gradystad"}' 

结束这个作品MYSQL JSON场WHERE开头或

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

这并不

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

为什么? &如何解决?

回答

0

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

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必须在结果集转换中去除它们),因此我们需要在搜索值中包含额外的"