2014-02-22 5 views
1

SQL에서 문자열 일부를 이스케이프 처리하는 데 문제가 있습니다. 예를 들면 :SQL Server에서 문자열 이스케이프

SELECT TOP 10000 * 
FROM experience 
WHERE name IS 
'AT&T' 

잘못된 구문 근처에 'AT'근처에 잘못된 구문이 표시됩니다. &과 관련된 문제로 보입니다. 탈출을위한 일반적인 규칙이 있습니까? 어떤 결과를 얻을 수 없음에도 불구하고

또한,

SELECT TOP 10000 * 
FROM experience 
WHERE name Like 
'AT&\T' 

이 작동

를 시도

+0

어떤 이름에 대한 = 'AT & T'는? 그것도 오류를 줄 수 있습니까? –

+0

또한이 답변을 보길 원할 수 있습니다. http://stackoverflow.com/questions/714980/how-do-you-search-for-a-ampersand-in-the-tsql-contains-function –

답변

2

문자열 리터럴에서 이스케이프 필요가있는 유일한 문자는 작은 따옴표입니다 (마련해야 결과가있다). '. 이것은 백 슬래시가 아닌 두 배로 이스케이프 처리됩니다.

SELECT 'O''Reilly' 

대다수의 경우 어쨌든 매개 변수화 된 쿼리를 사용해야하며 절대 수행 할 필요가 없습니다. 사용

올바른 연산자는

IS 만 유일하게 특별한 의미 백 슬래시는 문자열 리터럴이 경우 즉시입니다했다

와 함께 사용되는 =

SELECT TOP 10000 * 
FROM experience 
WHERE name = 'AT&T' 

작품 파인 SQL Fiddle Demo입니다 줄 바꿈 전에 줄 연속 문자로 작동합니다.

PRINT 'This is all \ 
one line' 

반환

이 모두 한 줄

+0

& '마지막'T '다음에 &'T '에 대한 대체 변수를 묻습니다. 운영자에 대한 조언을 주셔서 감사합니다! @martinsmith – redrubia

+0

@ redbia - "대체 변수"는 무엇입니까? SQL Server는 그렇지 않습니다. 이 도구를 실행하는 도구는 무엇입니까? –

+0

@ redrubia - SQL Plus를 사용하고 있다고 생각하십니까? 어떤 경우에는 [여기를 참조하십시오] (http://stackoverflow.com/questions/118190/how-do-i-ignore-ampersands-in-a-sql-script-running-from-sql-plus). SQL Server에 실제로 연결하고 있는지 여부는 오라클과는 대조적으로 의심 스럽습니다. 그리고 오라클에 연결하는 경우'TOP '없이 다시 작성해야합니다 –

관련 문제