我知道我可以使用IN(1,2,3)從SQL數據庫中選擇其值爲1,2或3的項目,但如果我在MYSQL中有一個值是字符串,並且是等於'1,2,3',我想選擇該值。據我知道,我必須這樣做:如何在sql中存儲然後通過CSV進行搜索?
SELECT whatever FROM wherever WHERE sqlvariable = '1' OR sqlvariable LIKE '1,%' OR `sqlvariable` LIKE '%,1,%' OR `sqlvariable` LIKE '%,1'
,如果我想在反向模擬「IN」之類的也可以。但可以說,我想選擇sqlvariable其含有1或2,那麼,我必須這樣做:
SELECT whatever FROM wherever WHERE sqlvariable = '1' OR sqlvariable LIKE '1,%' OR `sqlvariable` LIKE '%,1,%' OR `sqlvariable` LIKE '%,1' OR sqlvariable = '2' OR sqlvariable LIKE '2,%' OR `sqlvariable` LIKE '%,2,%' OR `sqlvariable` LIKE '%,2'
現在可以說,我用PHP產生上述疑問,我希望找到sqlvariable哪裏它包含1 2 4 66 34 33 22 44或992.這個查詢運行需要很長時間。
我可以做一個按位執行,但然後我只限於只有約60個不同的項目左右,這是不夠的。
有沒有更快的方式來利用上述在sql中的CSV查詢?我想這有點像IN(),但是相反。
我當然希望你沒有實際存儲CSV你的SQL數據庫中的字符串!如果你是的話,我希望你能說服你的老闆或者DBA更聰明一些,並且在* store *之前解析* .csv文件。 – paulsm4
我沒有老闆,我只是一個加拿大男子試圖學習先生:P感謝您的意見,但我的確在嘗試學習更好的方法來將數組存儲在數據庫中。我知道vBulletin論壇存儲例如權限組信息作爲字符串CSV。例如,vbulletin論壇上的權限變量看起來像'1,2,3',其中每個數字表示不同的權限組。應該如何做得更好? – Macmee