2011-02-02 4 views
1

내가특수 문자가있는 SQL 쿼리 - 처리 방법은 무엇입니까?

  1. 존과 같은 몇 EMP 이름을했습니다, 1
  2. 악마의
  3. 옥수수 내가 찾고 있어요 지금이

    같은

뭔가 이 이름들은 내가 사용하고있다

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

하지만 emp 이름에 특별한 charecters가 포함되어 있기 때문에 나는 또한 오류가 발생합니다.

누군가이 문제를 해결하는 방법을 알려 줄 수 있습니까?

+0

어떤 버전의 SQL (Oracle, MYSQL, Microsoft SQL) – Sparky

+0

죄송합니다. 저는 SQL Server 2005 – jestges

답변

5

를 사용합니다. 따옴표를 두 번 올려야합니다.

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 대신 u가 ''(두 개의 단일 qoute) 대신 \ '...로 이스케이프 처리 할 수 ​​있다고 생각합니다. – Ratinho

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%' 

이것은 당신이 당신의 예를 들어 문자열

정확히 일치 3 개 이산 이름이 가정의 또 다른 예를

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

ok ok 그러면 "john, 1"을 어떻게 처리 할 수 ​​있습니까? – jestges

+1

*은 유효한 SQL 와일드 카드가 아닙니다 (적어도 표준이 아닌 하나) –

+0

내 말에 오타가 말라서 고쳐졌습니다. 수정되었습니다. – Sparky

0

것은 당신의 empname을 찾고 있다면 "악마의"나는이 Sachin와 라틴 호를 사용하는 이스케이프 문자의 사용에 동의합니다.

그러나 like 절은 다른 것과 비슷한 것으로 사용됩니다.당신이 뭔가를 찾고 있다면 예를 들어, 당신이 일치 할 경우에 당신이

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

어떤

devil's peak 
devil's beard 
devil's 

하지만

Devil's peak 
deviled eggs 
devil 

을 일치합니다 사용할 수있는 "악마의"로 시작하는 중간에 "악마"라는 단어가있는 empname을 쓰면

select * from emp where empname like ('%devil\'s%') 
관련 문제