2014-09-03 147 views
1

我在MySQL數據庫中有一個表emp,它有列作爲名稱。在該名稱列中,值爲'abc \ xyz'。我想搜索這個值。我曾嘗試使用下面的查詢嘗試:搜索MySQL中有特殊字符的字符串值

select * from emp where name like 'abc\xyz'; 

我也有試過

select * from emp where name like 'abc\xyz' escape '\\'; 

,但我並沒有發現任何輸出。你能幫我找到這樣的字符串嗎?這樣的字符串可以在任何位置具有特殊字符。

在此先感謝。

+1

試過'其中name =「ABC \\ xyz''? – Phil 2014-09-03 06:28:26

+0

它工作。但是如果我想用通配符搜索一個字符串呢?如果我的字符串像1111abc \ xyz2222,並且我嘗試使用abc \ xyz匹配或者使用like? – 2014-09-03 06:31:59

+0

你能舉個例子嗎? – Phil 2014-09-03 06:33:20

回答

1

你可以嘗試這樣的:

select * from emp 
where empname like '%abc\\\\xyz%' 

SQL Fiddle Demo

docs

因爲MySQL使用C轉義語法的字符串(例如,「\ n」以表示換行符),則必須加倍在LIKE字符串中使用的任何「\」。例如,要搜索「\ n」,請將其指定爲「\\ n」。 要搜索「\」,請將其指定爲「\\\\」;這是因爲反斜槓被解析器剝離了一次,並且當匹配模式匹配時,反斜槓被匹配。

+0

我認爲你的一些doco文本被StackOverflow轉義:)另外,你不需要' ESCAPE'字符,因爲您沒有使用任何字面值'%'或'_' – Phil 2014-09-03 06:34:34

+0

RT上述不起作用。我已經嘗試過了。 – 2014-09-03 06:34:36

+0

@AasifSolkar我不得不在這篇文章中修復一些格式。要在「LIKE」匹配中搜索文字「\」,必須使用4個反斜槓,例如'abc \\\\ xyz' – Phil 2014-09-03 06:55:32

0
SELECT REPLACE(text,'\\','') FROM tbl 

您可以使用替換要刪除一些特殊字符:)

+0

這有破壞結果的問題。不推薦 – Phil 2014-09-03 06:37:44

+0

這不是最好的方法,但它可以取代特殊字符 – 2014-09-03 06:41:18

+0

我們可以使用替換功能,但是如果我的特殊字符位於開始或結束位置,它會顯示錯誤。對於例如我試過 select * from emp where replace(name,'\\','')like replace('\ xyz \ abc \','\\',''); 但它給出的錯誤爲 您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以在第1行'\\','')'附近使用正確的語法。 – 2014-09-03 06:42:30