아포스트로피 (단일 견적)가 포함 된 값을 삽입하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1912095

  •  19-09-2019
  •  | 
  •  

문제

아포스트로피와 함께 값을 삽입하려면 올바른 SQL 구문은 무엇입니까?

Insert into Person
  (First, Last)
Values
  'Joe',
  'O'Brien'

O 이후의 Apostrophe가 값의 엔딩 태그라고 생각하면서 계속 오류가 발생합니다.

도움이 되었습니까?

해결책

SQL에서 아포스트로피 (예 : 단일 견적 문자를 두 배로 늘리십시오)를 탈출하십시오.

INSERT INTO Person
    (First, Last)
VALUES
    ('Joe', 'O''Brien')
              /\
          right here  

선택 쿼리에도 동일하게 적용됩니다.

SELECT First, Last FROM Person WHERE Last = 'O''Brien'

Apostrophe 또는 Single Quote는 문자열 데이터의 시작과 끝을 지정하는 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 데이터베이스가 값을 다음과 같이 저장하려면 '.

수신 값을 소독하기 위해 교체를 사용하는 것을보십시오.

당신은 확인하고 싶습니다 '''', 문자열에 존재하는 경우 교체하십시오. '''''' 고독한 단일 견적을 피하기 위해.

Eduffy는 좋은 생각을했습니다. 그는 방금 코드 예제에서 뒤로 얻었습니다. JavaScript 또는 SQLITE에서 Apostrophe를 악센트 기호로 교체 할 수 있습니다.

그는 (우연히) 오브라이언에서 아포스트로피를 교체하는 대신 강조 기호를 문자열의 구분기로 배치했습니다. 이것은 실제로 대부분의 경우에 끔찍하게 간단한 솔루션입니다.

Apostrophe 특성은 호출하여 삽입 할 수 있습니다 아포스트로피와 기능 ASCII 테이블 조회 값, 39. 문자열 값은 연산자를 연결합니다.

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

값 주위에 이중 인용 표시를 사용하십시오.

insert into Person (First, Last) Values("Joe","O'Brien")

대신 백 틱 (~ 키)을 사용하십시오.

`O'Brien`
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top