SQL Server에서 작은 따옴표를 어떻게 이스케이프합니까?
9 insert
의 테이블에 텍스트 데이터를 넣으려고합니다 SQL Server
.
텍스트에는 작은 따옴표 ( ')가 포함됩니다.
그것을 어떻게 피할 수 있습니까?
두 개의 작은 따옴표를 사용해 보았지만 약간의 오류가 발생했습니다.
예. insert into my_table values('hi, my name''s tim.');
작은 따옴표는 예제에서 보여준 것처럼 두 배로 늘려 이스케이프됩니다 . 다음 SQL은이 기능을 보여줍니다. SQL Server 2008에서 테스트했습니다.
DECLARE @my_table TABLE (
[value] VARCHAR(200)
)
INSERT INTO @my_table VALUES ('hi, my name''s tim.')
SELECT * FROM @my_table
결과
value
==================
hi, my name's tim.
다른 작은 따옴표를 사용하여 작은 따옴표를 이스케이프하는 것이 작동하지 않는 경우 (최근 REPLACE()
쿼리 중 하나에서 작동하지 않은 것처럼 ) SET QUOTED_IDENTIFIER OFF
쿼리 이전에 사용할 수 있고 쿼리 SET QUOTED_IDENTIFIER ON
뒤에 사용할 수 있습니다.
예를 들면
SET QUOTED_IDENTIFIER OFF;
UPDATE TABLE SET NAME = REPLACE(NAME, "'S", "S");
SET QUOTED_IDENTIFIER ON;
-- set OFF then ON again
어때 :
insert into my_table values('hi, my name'+char(39)+'s tim.')
따옴표를 두 배로 늘려도 효과가 있었어야했기 때문에 그것이 당신에게 효과가 없다는 것이 특이합니다. 그러나 대안은 문자열 주위에 단일 문자 대신 큰 따옴표 문자를 사용하는 것입니다. 즉,
insert into my_table values("hi, my name's tim."
);
이 문제를 해결하는 두 가지 방법 :
에 대한 '
당신은 단순히 문자열, 예를 들어 그것을 두배로 할 수있다select 'I''m happpy' -- will get: I'm happy
확실하지 않은 문자의 경우 : SQL Server에서 문자의 유니 코드를 다음과 같이 얻을 수 있습니다. select unicode(':')
따라서이 경우에도 select 'I'+nchar(39)+'m happpy'
또한주의해야 할 또 다른 사항은 실제로 클래식 ASCII '(ASCII 27) 또는 유니 코드 2019 (비슷해 보이지만 동일하지는 않음)로 저장되었는지 여부입니다.
이것은 인서트에 대한 큰 문제는 아니지만 선택 및 업데이트에 대한 세계를 의미 할 수 있습니다.
유니 코드 값인 경우 WHERE 절 (예 : blah = 'Workers 's Comp')에서 '를 이스케이프하면 "Worker 's Comp"의'가 실제로 다음과 같은 경우 검색중인 값이없는 것처럼 반환됩니다. 유니 코드 값.
클라이언트 응용 프로그램이 자유 키와 복사 및 붙여 넣기 기반 입력을 지원하는 경우 일부 행에서는 유니 코드이고 다른 행에서는 ASCII 일 수 있습니다.
이를 확인하는 간단한 방법은 검색중인 값을 다시 가져 오는 일종의 개방형 쿼리를 수행 한 다음 메모장 ++ 또는 기타 유니 코드 지원 편집기에 복사하여 붙여 넣는 것입니다.
ascii 값과 유니 코드 값 사이의 다른 모양은 눈에 분명해야하지만, 항문쪽으로 기울이면 16 진수 편집기에서 27 (ascii) 또는 92 (유니 코드)로 표시됩니다.
작동합니다. 백 슬래시를 사용하고 큰 따옴표를 넣으십시오.
"UPDATE my_table SET row =\"hi, my name's tim.\";
이것은 작동합니다
DECLARE @singleQuote CHAR
SET @singleQuote = CHAR(39)
insert into my_table values('hi, my name'+ @singleQuote +'s tim.')
삽입 할 항목 앞에 '를 삽입하십시오. sqlServer의 이스케이프 문자와 같습니다.
예 : 필드가 있으면 I 'm fine . 당신은 할 수 있습니다 : UPDATE my_table SET row = 'I''m fine.';
다음 구문은 인용 부호 하나만 이스케이프합니다.
SELECT ''''
The result will be a single quote. Might be very helpful for creating dynamic SQL :).
string value = "Abhishek's";
value = Replace(value,"'","''");
참고URL : https://stackoverflow.com/questions/1586560/how-do-i-escape-a-single-quote-in-sql-server
'your programing' 카테고리의 다른 글
목록에서 중복 제거 (0) | 2020.09.28 |
---|---|
std :: string을 const char * 또는 char *로 변환하는 방법은 무엇입니까? (0) | 2020.09.28 |
Git에서 이전 커밋에 태그를 지정하는 방법은 무엇입니까? (0) | 2020.09.28 |
자바 : 정적 메서드를 사용하는 경우 (0) | 2020.09.28 |
TSQL을 사용하여 데이터베이스의 모든 테이블 목록을 얻으려면 어떻게해야합니까? (0) | 2020.09.28 |