아포스트로피가있는 값을 삽입하는 올바른 SQL 구문은 무엇입니까?
Insert into Person
(First, Last)
Values
'Joe',
'O'Brien'
O 다음의 아포스트로피가 값의 끝 태그라고 생각할 때 오류가 계속 발생합니다.
아포스트로피가있는 값을 삽입하는 올바른 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 주입 등 을 처리하는 기술 및 프레임 워크 (스택에 따라 다름)가 있습니다 .
작은 따옴표는 문자열의 시작과 끝을 나타내는 데 사용되기 때문에; 당신은 그것을 탈출해야합니다.
짧은 대답은 ''
SQL 데이터베이스가 값을로 저장하기 위해 두 개의 작은 따옴표를 사용 하는 것 '
입니다.
들어오는 값을 삭제하려면 REPLACE를 사용하십시오.
당신은 확인하고 싶은 ''''
, 그리고 그들이 함께 문자열에있는 경우 교체 ''''''
고독한 작은 따옴표를 탈출하기 위해.
eduffy는 좋은 생각을 가지고있었습니다 . 코드 예제에서 방금 가져 왔습니다. JavaScript 또는 SQLite에서 아포스트로피를 악센트 기호로 바꿀 수 있습니다.
그는 O'Brian에서 아포스트로피를 교체하는 대신 악센트 기호를 문자열의 구분 기호로 배치했습니다. 이것은 사실 대부분의 경우 매우 간단한 솔루션입니다.
값 주위에 큰 따옴표를 사용하십시오.
insert into Person (First, Last) Values("Joe","O'Brien")
He said, "Don't!"
작은 따옴표 및 / 또는 큰 따옴표 사용 과 같이 문자열을 삽입하는 방법도 설명해야 합니다. 'He said, "Don''t!"'
또는 "He said, ""Don't!"""
. 수락 된 답변이있는 오래된 질문에 새 답변을 추가 할 때는 새롭고 완전한 정보를 제공해야합니다. 큰 따옴표를 사용하는 것은 새로운 것이지만 몇 가지 DBMS로 제한됩니다. 당신은 그것을 받아들이는 것 중 적어도 하나를 식별하기 위해 고통을 가져야합니다.
대신 ~ 키로 백틱을 사용하십시오.
`O'Brien`