programing

SQL Server에서의 이스케이프 문자

codeshow 2023. 4. 17. 22:09
반응형

SQL Server에서의 이스케이프 문자

이스케이프 문자와 함께 따옴표를 사용하고 싶습니다.특수 문자가 있을 때 다음 오류를 방지하려면 어떻게 해야 합니까?

문자열 뒤에 닫히지 않은 따옴표가 있습니다.

다음과 같이 따옴표를 피할 수 있습니다.

select 'it''s escaped'

결과는 다음과 같습니다.

it's escaped

탈출하기 위해'다른 것을 먼저 넣어야 합니다.''

두 번째 답변에서 알 수 있듯이 다음과 같이 단일 따옴표를 피할 수 있습니다.

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'

이스케이프 문자를 정의할 수 있지만 사용할 수 있는 것은LIKE절을 클릭합니다.

예:

SELECT columns FROM table
WHERE column LIKE '%\%%' ESCAPE '\'

여기서 검색됩니다.%전체 문자열로, 이렇게 하면ESCAPE식별자SQL Server.

교체만 하면 됩니다.'와 함께''당신의 끈 안에

SELECT colA, colB, colC
FROM tableD
WHERE colA = 'John''s Mobile'

를 사용할 수도 있습니다.REPLACE(@name, '''', '''''')SQL을 동적으로 생성하는 경우

같은 문장으로 이스케이프하려면 EXCAPE 구문을 사용해야 합니다.

또한 SQL 주입 공격을 고려하지 않을 경우 공격에 노출될 수 있다는 점도 언급할 필요가 있습니다.자세한 것은, Google 또는 http://it.toolbox.com/wiki/index.php/How_do_I_escape_single_quotes_in_SQL_queries%3F 를 참조해 주세요.

MSQL에서 인용부호를 이스케이프하려면 큰따옴표를 사용합니다.''또는""탈옥자를 낳다'그리고.",각각 다음과 같다.

변수의 사용자 입력을 회피하려면 SQL 내에서 다음과 같이 할 수 있습니다.

  Set @userinput = replace(@userinput,'''','''''')

이제 @userinput은 견적이 발생할 때마다 추가 단일 견적을 사용하여 이스케이프됩니다.

WHERE username LIKE '%[_]d';            -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';

시작: SQL Server 언더스코어 이스케이프

를 사용할 수 있습니다.**\**이스케이프할 값 앞의 문자(예:insert into msglog(recipient) values('Mr. O\'riely') select * from msglog where recipient = 'Mr. O\'riely'

코드를 읽기 쉽게 하기 위해 대괄호를 사용할 수 있습니다.[]인용하다'또는 그 반대도 마찬가지입니다.

언급URL : https://stackoverflow.com/questions/5139770/escape-character-in-sql-server

반응형