아포스트로피가있는 값을 삽입하는 올바른 SQL 구문은 무엇입니까?
Insert into Person
(First, Last)
Values
'Joe',
'O'Brien'
O 다음의 아포스트로피가 값의 끝 태그라고 생각할 때 오류가 계속 발생합니다.
답변
SQL에서 아포스트로피를 피하십시오 (즉, 작은 따옴표 문자를 두 배로 늘림).
INSERT INTO Person
(First, Last)
VALUES
('Joe', 'O''Brien')
/\
right here
SELECT 쿼리에도 동일하게 적용됩니다.
SELECT First, Last FROM Person WHERE Last = 'O''Brien'
아포스트로피 또는 작은 따옴표는 문자열 데이터의 시작과 끝을 지정하는 SQL의 특수 문자입니다. 즉, 문자를 리터럴 문자열 데이터의 일부로 사용 escape
하려면 특수 문자 가 필요합니다 . 작은 따옴표를 사용하면 일반적으로 따옴표를 두 배로 늘립니다. (작은 따옴표 대신 큰 따옴표가 아닌 두 개의 작은 따옴표 문자)
참고 : 원시 SQL 인터페이스를 통해 수동으로 데이터를 편집 할 때 개발 및 테스트 외부에서 쿼리를 작성하는 일은 드물기 때문에이 문제에 대해서만 걱정해야합니다. 코드에는 특수 문자 이스케이프 처리, SQL 주입 등 을 처리하는 기술 및 프레임 워크 (스택에 따라 다름)가 있습니다 .
답변
작은 따옴표를 두 배로 늘려야합니다 …
insert into Person (First, Last)
values ('Joe', 'O''Brien')
답변
아포스트로피를 피해야합니다. T-SQL 에서는 이중 아포스트로피를 사용하므로 insert
명령문이 다음과 같이됩니다.
Insert into Person
(First, Last)
Values
'Joe', 'O''Brien'
답변
작은 따옴표는 문자열의 시작과 끝을 나타내는 데 사용되기 때문에; 당신은 그것을 탈출해야합니다.
짧은 대답은 ''
SQL 데이터베이스가 값을로 저장하기 위해 두 개의 작은 따옴표를 사용 하는 것 '
입니다.
들어오는 값을 삭제하려면 REPLACE를 사용하십시오.
당신은 확인하고 싶은 ''''
, 그리고 그들이 함께 문자열에있는 경우 교체 ''''''
고독한 작은 따옴표를 탈출하기 위해.
답변
eduffy는 좋은 생각을 가지고있었습니다 . 코드 예제에서 방금 가져 왔습니다. JavaScript 또는 SQLite에서 아포스트로피를 악센트 기호로 바꿀 수 있습니다.
그는 O’Brian에서 아포스트로피를 교체하는 대신 악센트 기호를 문자열의 구분 기호로 배치했습니다. 이것은 사실 대부분의 경우 매우 간단한 솔루션입니다.
답변
아포스트로피 문자는 아포스트로피의 ASCII 테이블 조회 값 39로 CHAR 함수를 호출하여 삽입 할 수 있습니다. 그런 다음 문자열 값을 연결 연산자 와 함께 연결할 수 있습니다.
Insert into Person
(First, Last)
Values
'Joe',
concat('O',char(39),'Brien')
답변
작은 따옴표는 두 배로 확대하여 이스케이프 처리합니다 .
다음 SQL은이 기능을 보여줍니다.
declare @person TABLE (
[First] nvarchar(200),
[Last] nvarchar(200)
)
insert into @person
(First, Last)
values
('Joe', 'O''Brien')
select * from @person
결과
First | Last
===================
Joe | O'Brien