2013-07-16 89 views
-2

我有字符串等{"A":["3", "4", "5", "6"],"B":["3", "4", "5", "6"],"C":[{"2":"y"},{"3":"y"},{"4":"y"},{"5":"y"}],"D":["3", "4", "5", "6"]}搜索在查詢中使用的正則表達式

我想搜索「5」 B陣列的內部意味着「5」而不是在任何其他內部MySQL查詢。

什麼是對於

+4

如果是JS ON,爲什麼不簡單地json_decode()呢? –

+0

它存儲在數據庫中,並在搜索我想搜索每條記錄我不能解碼每條記錄,並將它們進行比較 – mukund

+1

如果數據已被正確地歸一化,那麼這不會是一個問題 –

回答

1

簡單而有效的解決方案是REGEXP '.*"B":\\[["0-9,]*"5"["0-9,]*\\]'

2

馬克·貝克正則表達式幾乎回答了你:PHP已經爲JSON字符串解碼的方法。這比自己分析更容易:

http://php.net/manual/en/function.json-decode.php

編輯:我看到你的評論,這個信息被存儲在數據庫中。在這種情況下,我不會將json字符串直接存儲在數據庫中。通過將所有信息保存在一個列中,您有點擊敗關係數據庫的目的。

+0

是的PHP有,但我想在查詢中使用,所以我需要正則表達式 – mukund

+0

你讓它變得更加困難比它必須。只需在表格中添加額外的列,以便您可以利用他們努力工作的算法來提高效率。你試圖實施的只是工作速度慢,效率低下。對於需要查看代碼的其他人來說,這也會非常不清楚和混淆。 –

0

由於它是JSON,使用json_decode:

$str = '{"A":["3", "4", "5", "6"],"B":["3", "4", "5", "6"],"C":[{"2":"y"},{"3":"y"},{"4":"y"},{"5":"y"}],"D":["3", "4", "5", "6"]}'; 
$obj = json_decode($str); 
echo $obj->{'B'}[2]; 

輸出:

5 
+0

that't真的,但我需要正則表達式來查找它裏面的查詢不在PHP – mukund

-1

你可以嘗試這樣的事情:

REGEXP '"B":\[([^"\]]")*5"'