2012-04-23 55 views
0

如何對多個ID的格式設置爲JSON進行選擇?在格式爲json的字段中選擇多個ID

$query = 'SELECT * FROM articles as a WHERE "10" IN (a.catids)'; 

The value of a.catids in the db-field is {"0":"10","1":"12"}; 
+0

你能成爲一個更具體一點? – Kovo 2012-04-23 17:46:07

+0

如果你的JSON是在mysql表中的字符串,你可以使用正則表達式來搜索您正在尋找的ID對於 – ControlAltDel 2012-04-23 17:48:03

+0

我在表格中有一些文章,每篇文章都有一個或多個存儲在字段cati中的類別id(採用JSON格式)現在我想篩選來自par特別類別。 – 2012-04-23 17:49:42

回答

1

沒有「正確」的方法來做到這一點。 MySQL不知道JSON是什麼,即使你對這些ID進行文本搜索,你也會注意到它非常緩慢。

我建議規範化表格。更新腳本以將catids放在單獨的表格中。

+0

是的,你說得對。我會去那。只是想知道,因爲將ID存儲在JSON字段非常簡單:-) – 2012-04-23 18:00:59

+0

@COBIZwebdevelopment你應該接受這個(在左邊選票下的鉤子) – 2012-04-23 18:10:08

2

喜歡的東西:

​​

我包括:和,所以你是確保你選擇的值而不是索引

+0

當然,這個查詢會非常慢,因爲它必須去通過每一行進行匹配。 – 2012-04-23 17:51:18

1

我猜你正在尋找等。

SELECT * FROM articles as a WHERE a.catids LIKE '%10%' 

您也想看看像語法(因爲你可以搜索'%「_」:「10」%」之後,甚至更復雜的東西,只有第二部分搜索具有

最好的,你就不會存儲您的ID的方式,雖然。

+0

謝謝,我會以正確的方式去... – 2012-04-23 18:08:14