2011-02-02 51 views
1

我有幾個EMP的名字,像具有特殊字符的SQL查詢 - 如何處理?

  1. 約翰,1
  2. 魔鬼的
  3. 玉米

像這樣

現在,當我在尋找這些名字我正在使用

select * from emp where empname like ('john,1,devil's,corn') 

但我沒有得到預期的值也收到錯誤,因爲emp名稱包含特殊的字符和''。

有人可以幫我解決這個問題嗎?

+0

什麼版本的SQL(甲骨文,MYSQL,Microsoft SQL) – Sparky 2011-02-02 13:32:59

+0

對不起,我正在使用sql server 2005 – jestges 2011-02-02 13:34:02

回答

5

這裏假設你有你的榜樣串

完全匹配3離散名。你需要加倍報價。

select * from emp where 
empname IN ('john,1' , 'devil''s', 'corn') 

您也不能在SQL Server中使用LIKE/IN。

select * from emp where 
    empname like '%john,1%' 
    OR 
    empname like '%devil''s%' 
    OR 
    empname like '%corn%' 
0

,如果你使用mysql:

select * from emp where empname like ('john,1','devil\'s','corn') 
+0

我認爲,對於sql服務器,你可以通過''(兩個單一qoute)而不是\'轉義單引號。 – Ratinho 2011-02-02 13:39:47

0
select * from emp where empname like ('john\,1','devil\'s','corn\'') escape '\' 

使用關鍵字逃生提的查詢轉義字符。

0

對於大多數SQL版本,例如,您需要轉義單引號。

select * from emp where empname like ('john,1,devil''s,corn') 

此外,上面的示例正在尋找一個非常具體的字符串值,您需要包括*或?作爲通配符,所以要尋找所有的empname的像魔鬼的,使用

select * from emp where empname like '%devil''s%' 

又如

select * from emp where empname like 'john,1%' 
0

如果您正在尋找「惡魔」的empname,那麼我同意使用Sachin和Ratinho使用的轉義字符。

但是,like子句用於與另一個子句相似的內容。例如,如果你正在尋找的東西,與「魔鬼」開始,那麼你可以使用

select * from emp where empname like ('devil\'s%') 

這將匹配

devil's peak 
devil's beard 
devil's 

但不

Devil's peak 
deviled eggs 
devil 

如果你想匹配在中間使用「惡魔」的名字,那麼你可以使用

select * from emp where empname like ('%devil\'s%')