이스케이프 문자와 함께 따옴표를 사용하고 싶습니다. 어떻게 할 수 있습니까?
SQL Server에서 오류를 받았습니다.
문자열 뒤의 닫히지 않은 따옴표.
varchar
변수에 SQL 쿼리를 작성하고 있지만 해당 오류를 받았습니다.
문자열 뒤의 닫히지 않은 따옴표.
따옴표를 이스케이프 문자로 사용하고 싶습니다.
이스케이프 문자와 함께 따옴표를 사용하고 싶습니다. 어떻게 할 수 있습니까?
SQL Server에서 오류를 받았습니다.
문자열 뒤의 닫히지 않은 따옴표.
varchar
변수에 SQL 쿼리를 작성하고 있지만 해당 오류를 받았습니다.
문자열 뒤의 닫히지 않은 따옴표.
따옴표를 이스케이프 문자로 사용하고 싶습니다.
답변:
탈출하기 위해서는 '
다른 것을 먼저 넣어야합니다.''
두 번째 답변에서 알 수 있듯이 다음과 같이 작은 따옴표를 피할 수 있습니다.
select 'it''s escaped'
결과는
it's escaped
실행하기 위해 SQL을 VARCHAR에 연결하는 경우 (즉, 동적 SQL), SQL 매개 변수화를 권장합니다. 이것은 SQL 인젝션을 방지하는 데 도움이되는 이점이 있으며 이와 같이 따옴표를 이스케이프하는 것에 대해 걱정할 필요가 없음을 의미합니다 (따옴표를 두 배로 늘림으로써 수행).
예 대신에
DECLARE @SQL NVARCHAR(1000)
SET @SQL = 'SELECT * FROM MyTable WHERE Field1 = ''AAA'''
EXECUTE(@SQL)
이 시도:
DECLARE @SQL NVARCHAR(1000)
SET @SQL = 'SELECT * FROM MyTable WHERE Field1 = @Field1'
EXECUTE sp_executesql @SQL, N'@Field1 VARCHAR(10)', 'AAA'
문자열 내부로 교체 '
하면 ''
됩니다.
SELECT colA, colB, colC
FROM tableD
WHERE colA = 'John''s Mobile'
REPLACE(@name, '''', '''''')
SQL을 동적으로 생성하는 경우 에도 사용할 수 있습니다.
like 문 내에서 이스케이프하려면 ESCAPE 구문을 사용해야합니다.
고려하지 않으면 SQL 주입 공격에 노출되어 있다는 점도 언급 할 가치가 있습니다. Google 또는 http://it.toolbox.com/wiki/index.php/How_do_I_escape_single_quotes_in_SQL_queries%3F 에서 추가 정보
select '
오류를 반환합니다 Unclosed quotation mark after the character string ''
. 내 대답에서 나는 "
두 가지 만 사용 '
하지 않으며 왜 내 대답이 반대표가있는 유일한 대답인지 확실하지 않습니다.
WHERE username LIKE '%[_]d'; -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';
FROM : SQL Server는 밑줄 이스케이프
코드를 읽기 쉽게 유지하려면 대괄호 []
를 사용 하여를 포함하는 문자열을 인용 '
하거나 그 반대로 할 수 있습니다 .