2017-09-11 40 views
0

我想使用具有json字符串的列從mysql表中查詢記錄。至於,我在做一箇舊項目,所用的Mysql版本是5.0,因此我不能使用mysql 5.7 json函數,例如JSON_CONTAINS等等等等基於具有json字符串的列搜索mysql記錄

select * cpd_company where operation_data = '{"opening_status":"open", "days": ["Mon"]}'; 

operation_data列包含這樣的JSON字符串:

{"days":["Mon","Fri"],"open_hour":"12:00 AM","close_hour":"12:30 PM","operating_type":"daily","opening_status":"open","journey_type":"Departure"} 

這不是工作,因爲該列是文本數據類型和提供的字符串不等於完整的字符串。

有人可以幫忙嗎?謝謝

+0

我認爲,在這種情況下,您只能使用https://dev.mysql.com/doc/refman/5.7/en/regexp.html – Neodan

+0

您是否在數據庫中存儲了JSON字符串?這聽起來像一個糟糕的設計模式。如果您有一個良好的設計模式,數據庫中不應該有逗號分隔的值。 – Qirel

+0

那麼,該列的JSON字符串已經存在,並且大約有數千個具有不同json字符串的記錄,即鍵值對。我需要基於該列進行查詢,而且我不能使用JSON函數,因爲MYSQL版本爲5.0 – Owais

回答

0

也許你應該試試在你不想重新組織數據庫結構的情況下試試LIKE'%{$ needle}%'和其他字符串函數?至於我可以從你的例子看,你可能分裂您查詢,以獲得所需結果:

1)第一個查詢將選擇「opening_status」條目:「開放」的針,

2)第二 - 與「星期一「針

3)比你應該找到這兩個查詢結果的交集。

以下內容僅適用於您只有一個「Mon」條目的情況,但我相信您會在JSON字符串中少有「Mon」的情況下使用MySql字符串函數找到解決方法。