아포스트로피가있는 값을 삽입하는 올바른 SQL 구문은 무엇입니까?아포스트로피 (작은 따옴표)가 포함 된 값을 삽입하는 방법은 무엇입니까?
Insert into Person
(First, Last)
Values
'Joe',
'O'Brien'
O가 값의 끝 태그 인 후에 아포스트로피라고 생각하므로 계속 오류가 발생합니다.
아포스트로피가있는 값을 삽입하는 올바른 SQL 구문은 무엇입니까?아포스트로피 (작은 따옴표)가 포함 된 값을 삽입하는 방법은 무엇입니까?
Insert into Person
(First, Last)
Values
'Joe',
'O'Brien'
O가 값의 끝 태그 인 후에 아포스트로피라고 생각하므로 계속 오류가 발생합니다.
, 또는 작은 따옴표는 문자열 데이터의 시작과 끝을 지정하는 SQL의 특수 문자입니다. 즉 리터럴 문자열 데이터의 일부로 사용하려면 escape
특수 문자가 필요합니다. 작은 따옴표를 사용하면 일반적으로 따옴표를 두 배로 늘릴 수 있습니다. (대신 작은 따옴표 두 개의 작은 따옴표 문자가 아닌 이중 인용.)
주 : 수동으로 원시 SQL 인터페이스를 통해 데이터를 편집 할 때 당신은 오직 개발의 외부 쿼리를 작성하기 때문에이 문제에 대해 걱정해야하고 테스트는 드문 경우입니다. 코드에서 등 이스케이프 특수 문자 관리, SQL injection을 기술 및 프레임 워크 (당신의 스택에 따라),
$ linkQuestion = str_replace (" '", "' '", $ linkQuestion); (읽기가 힘듭니다!) – user462990
아포스트로피를 벗어나야합니다. 당신의 insert
문이가되도록 T-SQL 이것은, 이중 아포스트로피입니다 : 대신
Insert into Person
(First, Last)
Values
'Joe', 'O''Brien'
AFAIK'Values'는 중괄호로 묶어야합니다 (그러면 @JustinNiessner와 동일한 대답이됩니다) –
사용합니다 (~ 키)를 역 따옴표;
SELECT First, Last FROM Person WHERE Last = 'O''Brien'
을 아포스트로피 :
INSERT INTO Person
(First, Last)
VALUES
('Joe', 'O''Brien')
/\
right here
같은 쿼리를 선택 적용 :
`O'Brien`
데이터 입력을하지 않는 한 ... – BillyNair
그러면 문제가됩니다. 역겨운? –
당신은 단지 작은 따옴표를 두 배로해야 ...
insert into Person (First, Last)
values ('Joe', 'O''Brien')
때문에이있다 작은 따옴표는 문자열의 시작과 끝을 나타내는 데 사용됩니다. 당신은 그것을 벗어날 필요가 있습니다.
간단한 대답은 두 개의 작은 따옴표 - ''
-을 사용하여 SQL 데이터베이스가 '
값을 저장합니다.
''''
를 확인하고이 경우 교체하려면 : 입력 값을 소독하기 위해 REPLACE 사용에
봐로 문자열에 존재한다. 고독한 작은 따옴표를 피하기 위해.
eduffy had a good idea. 그는 코드 예제에서 거꾸로 가져 왔습니다. JavaScript 또는 SQLite에서 아포스트로피를 악센트 기호로 바꿀 수 있습니다.
그는 우연히 O'Brian의 아포스트로피를 바꾸는 대신 악센트 기호를 문자열의 구분 기호로 사용했습니다. 실제로 이것은 대부분의 경우에 매우 단순한 해결책입니다.
어포 스트로피 문자는 함수를 아포스트로피의 ASCII table lookup 값 39와 함께 호출하여 삽입 할 수 있습니다. 문자열 값은 concatenate operator과 함께 연결할 수 있습니다.
Insert into Person
(First, Last)
Values
'Joe',
concat('O',char(39),'Brien')
큰 따옴표를 사용하십시오.
insert into Person (First, Last) Values("Joe","O'Brien")
Informix를 알고 있지만 이것은 하나의 DBMS를 허용하지만 이것은 표준 SQL이 아닙니다. 그것. '작은 따옴표 및/또는 큰 따옴표를 사용하여 - 그가 할 수있는 "그는"하지마! "와 같은 문자열을 삽입하는 방법에 대해서도 언급해야합니다."그는 말했습니다. "하지마!" ''또는 ' "그는 말했다,"하지마! "" ". 수락 된 답변으로 오래된 질문에 새로운 대답을 추가 할 때, 새롭고 완전한 정보를 제공해야합니다. 큰 따옴표를 사용하는 것은 새롭지 만 몇 가지 DBMS로 제한됩니다. 당신은 그 (것)들을 받아들이는 그들의 적어도 한을 확인하기 위하여 통증을 가지고 가야한다. –
SQL 인젝션 공격에 노출되지 않았는지 확인하십시오. 가능하면 매개 변수를 사용하십시오. – Andrew
어떤 스크립팅 언어를 사용하고 있습니까? 예를 들어 PHP에서이 기능을 올바르게 수행하는 기능이 있습니다. – philfreo
Andrew와 여기에 동의 :이 질문은 SQL 클라이언트 또는 "쿼리 브라우저"등을 통해 SQL을 실행하는 것과 관련된 것일뿐입니다. 실제로는 프로덕션 코드의 어딘가가 아닙니다. 매개 변수화 된 진술을 사용하지 않는 것은 어리 석다. – charstar