2012-05-29 44 views
4

在phpMyAdmin我使用此查詢:如何匹配字符串與MySQL中的轉義引號字符?

SELECT * FROM myrecords where TITLE LIKE "%\\\"%" 

要過濾掉不好保存記錄中有\標誌"標誌逃脫。它應該只是"。所以我只需要找到\"這些記錄,並用"代替。但是當我使用上面的查詢來篩選\"時,我得到的記錄與\"以及"的記錄一樣。

如何使此查詢只獲得帶有\"而不是"的記錄?

+0

'喜歡' %\\\\「%''? – paul

+0

嘗試 - >''%\\'%''使用單引號括住整個字符串,只有e掃除反斜槓 – ManseUK

+0

它看起來應該已經工作了,但在MySQL看到它之前,您的查詢可能會被phpMyAdmin轉義。你可以嘗試命令行客戶端嗎? – hvd

回答

1

@保羅糾正我,它是這樣說的:

SELECT t1.title FROM myrecords as t1 where replace(title,'\\\"','@') LIKE "%@%"; 
+0

對不起,但我不明白它是如何工作的。使用它後,我得到了兩列@。 –

+0

因此,您正在替換每個「for @」,並且您正在通過@進行搜索,但我不確定它是否會起作用,您是否可以在此創建表的一部分:http://sqlfiddle.com/to test – jcho360

+0

我想你的意思是有一個'HAVING'子句,而不是'WHERE'子句,但是你仍然錯過了你的'replace(...)'列的別名,如果它起作用,那不是好的解決方案,對不起 – fancyPants

0

這是搜索\"正確的查詢:

SELECT * FROM myrecords where TITLE LIKE '%\\\\\\\"%'; 

MySQL documentation

"To search for 「\」, specify it as 「\\\\」; this is because the backslashes are stripped once by the parser and again when the pattern match is made, leaving a single backslash to be matched against. "

相關問題