我有幾個EMP的名字,像具有特殊字符的SQL查詢 - 如何處理?
- 約翰,1
- 魔鬼的
- 玉米
像這樣
現在,當我在尋找這些名字我正在使用
select * from emp where empname like ('john,1,devil's,corn')
但我沒有得到預期的值也收到錯誤,因爲emp名稱包含特殊的字符和''。
有人可以幫我解決這個問題嗎?
我有幾個EMP的名字,像具有特殊字符的SQL查詢 - 如何處理?
- 約翰,1
- 魔鬼的
- 玉米
像這樣
現在,當我在尋找這些名字我正在使用
select * from emp where empname like ('john,1,devil's,corn')
但我沒有得到預期的值也收到錯誤,因爲emp名稱包含特殊的字符和''。
有人可以幫我解決這個問題嗎?
這裏假設你有你的榜樣串
完全匹配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%'
,如果你使用mysql:
select * from emp where empname like ('john,1','devil\'s','corn')
我認爲,對於sql服務器,你可以通過''(兩個單一qoute)而不是\'轉義單引號。 – Ratinho 2011-02-02 13:39:47
select * from emp where empname like ('john\,1','devil\'s','corn\'') escape '\'
使用關鍵字逃生提的查詢轉義字符。
對於大多數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%'
如果您正在尋找「惡魔」的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%')
什麼版本的SQL(甲骨文,MYSQL,Microsoft SQL) – Sparky 2011-02-02 13:32:59
對不起,我正在使用sql server 2005 – jestges 2011-02-02 13:34:02