2011-02-25 40 views
1
SELECT id, absolute_tag, tag FROM c7_storage_tags 
WHERE users_id = 1 
     AND LOWER(absolute_tag) LIKE LOWER('@#Pictures#zee\'s fav%') 

有特殊字符的SQL查詢這不是給我正確的結果使用像,甚至你我有一個排在我用正確的字符串數據庫。問題在它

對我來說,更好的解決方案是找出一種方法,使我的「@#Pictures#zee \ fav \」字符串可以被視爲一個字符串。我可以像這樣表演。

我該如何解決它。

在此先感謝。

Zeeshan

+0

」您可以提供更多的數據。例如來自absolute_tag列的更多值 – 2011-02-26 00:17:55

+0

absolute_tag列具有文件夾路徑,例如在Documents文件夾名稱爲TestFolder中有一個文件夾,因此絕對路徑中的數據將是@#Documents#TestFolder – 2011-02-26 00:25:46

回答

3

如果你的字符串中有一個反斜槓,你應該轉義兩次:

// value absolute_tag == "@#Pictures#zee\'s fav" 
select * from test where `absolute_tag` like '@#Pictures#zee\\\\\'%' 

http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html#operator_like

您的查詢應該像

SELECT id, absolute_tag, tag FROM c7_storage_tags 
WHERE users_id = 1 
AND LOWER(absolute_tag) LIKE LOWER('@#Pictures#zee\\\\\'s fav%') 

你原始查詢正在尋找帶有absoulte_tags的記錄以「@#Pictures#zee's fav」開頭「

」 「
+0

非常感謝。你還可以告訴我如何使用$ shared_tag_path = str_replace('\','\\\\\',$ string_name_var);在PHP中逃避反斜槓。我猜php不允許'\' – 2011-02-26 00:34:14

+0

我不能告訴你對蝙蝠的權利,因爲我現在無法測試,我相信它應該是'str_replace('\\','\\\\\\\',$ string_name_var);' – a1ex07 2011-02-26 00:37:11

+0

謝謝.. ..作品..完美 – 2011-02-26 00:58:45