2017-01-02 60 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必須在結果集轉換中去除它們),因此我們需要在搜索值中包含額外的"