[mysql] MySql에서 아포스트로피 ( ‘)를 피하는 방법?

MySQL의 문서 가되어야한다고 말한다 \'. 그러나 scite와 mysql은 모두 ''작동합니다. 나는 그것을 보았습니다. 어떻게해야합니까?



답변

당신이 인용 한 MySQL 문서는 실제로 당신이 언급 한 것보다 조금 더 말합니다. 또한 말합니다

'“로 인용 된 문자열 내부의 ” '“는 ” “로 쓸 수 있습니다 ''.

(또한 MySQL 5.0 버전의 표 8.1. 특수 문자 이스케이프 시퀀스 에 연결했으며 현재 버전은 5.6이지만 현재 표 8.1. 특수 문자 이스케이프 시퀀스 는 매우 유사합니다.)

나는 매개 변수 backslash_quote (string) 대한 Postgres 메모 가 유익 하다고 생각합니다 .

따옴표를 \'문자열 리터럴로 표시 할 수 있는지 여부를 제어합니다 . 따옴표를 나타내는 기본 SQL 표준 방법은 따옴표를 두 배로 늘리는 것 ( '')이지만 PostgreSQL은 역사적으로도 받아 들였습니다 \'. 그러나를 사용 \'하면 보안 위험이 발생합니다.

즉, 이중 인용 부호 문자를 사용하는 것이 작은 따옴표를 이스케이프 처리하기 위해 백 슬래시를 사용하는 것보다 전체적이고 장기적으로 더 나은 선택입니다.

이제 언어 선택, SQL 데이터베이스 및 비표준 쿼크 선택 및 쿼리 프레임 워크 선택을 방정식에 추가하려는 경우 다른 선택으로 끝날 수 있습니다. 제약 조건에 대한 많은 정보를 제공하지 않습니다.


답변

표준 SQL은 큰 따옴표를 사용합니다. MySQL은이를 합리적으로 준수해야합니다.

'He said, "Don''t!"'


답변

user2087510의 의미는 다음과 같습니다.

name = 'something'
name = name.replace("'", "\\'")

나는 또한 이것을 성공으로 사용했다.


답변

그냥 ''대신 '두 번 쓰세요'


답변

예를 들면 다음과 같습니다.

SELECT * FROM pubs WHERE name LIKE "%John's%"

작은 따옴표를 묶으려면 큰 따옴표를 사용하십시오.

작은 따옴표를 사용한다고 주장하고 문자를 이스케이프 해야하는 경우 :

SELECT * FROM pubs WHERE name LIKE '%John\'s%'


답변

내가 알고있는 세 가지 방법이 있습니다. 첫 번째는 가장 아름답 지 않고 두 번째는 대부분의 프로그래밍 언어에서 일반적인 방법입니다.

  1. 다른 작은 따옴표를 사용하십시오. 'I mustn''t sin!'
  2. \작은 따옴표 앞에 이스케이프 문자 를 사용하십시오 '.'I mustn\'t sin!'
  3. 작은 따옴표 대신 큰 따옴표를 사용하여 문자열을 묶습니다. "I mustn't sin!"

답변

문자열을 교체

value = value.replace(/'/g, "\\'");

여기서 value는 데이터베이스에 저장할 문자열입니다.

더욱이,

이것에 대한 NPM 패키지, 당신은 그것을 볼 수 있습니다

https://www.npmjs.com/package/mysql-apostrophe