> 백엔드 개발 > Golang > PostgreSQL LIKE 패턴에서 특수 문자를 이스케이프하는 방법은 무엇입니까?

PostgreSQL LIKE 패턴에서 특수 문자를 이스케이프하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-23 00:22:13
원래의
422명이 탐색했습니다.

How to Escape Special Characters in PostgreSQL LIKE Patterns?

PostgreSQL LIKE 패턴에서 특수 문자 이스케이프

LIKE 패턴에서 특수 문자 이스케이프는 정확한 일치를 보장하는 데 중요합니다. 예를 들어 이름 열이 "rob%"와 같이 사용자가 제공한 문자열로 시작하는 행을 검색하는 시나리오를 생각해 보세요. 그러나 사용자 입력에 "_"와 같은 특수 문자가 포함되어 있으면 거짓 긍정이 발생합니다.

이스케이프 메커니즘

PostgreSQL에서는 다음을 사용하여 특수 문자를 이스케이프할 수 있습니다. 백슬래시() 또는 ESCAPE 절로 지정된 사용자 정의 이스케이프 문자입니다. 문자 그대로 특수 문자를 일치시키려면 두 번 이스케이프해야 합니다.

"rob_"를 문자 그대로 일치시키려면 다음 LIKE 패턴을 사용합니다.

WHERE name LIKE 'rob^^%'
로그인 후 복사

또는 이스케이프 절을 사용하고 대체 이스케이프를 지정할 수 있습니다. 문자:

WHERE name LIKE 'rob_%node1^^node2.uucp@%' ESCAPE '^'
로그인 후 복사

이는 "john%node1^node2.uccp@" 뒤에 임의의 문자가 오는 것과 일치합니다.

고려 사항

  • 기본 이스케이프 문자는 백슬래시이지만, standard_conforming_strings가 다음과 같은 경우 다른 목적으로 사용됩니다. OFF.
  • 특수 문자 이스케이프는 사용자 입력으로 구성된 동적 SQL 문에도 적용됩니다. 이 경우 SQL 주입을 피하기 위해 서버 측에서 수행해야 합니다.
  • 변수 대체에 자리 표시자를 사용하면 두 가지 모두 보장됩니다. 정확한 일치 및 보안.

일반 SQL 명령문

다음은 Standard_conforming_strings ON 여부에 관계없이 서버측 이스케이프 문자 대체를 사용하여 사용할 수 있는 일반 SQL 문입니다.

SELECT * FROM USERS WHERE name LIKE replace(replace(replace(,'^','^^'),'%','^%'),'_','^_') ||'%' ESCAPE '^'
로그인 후 복사

위 내용은 PostgreSQL LIKE 패턴에서 특수 문자를 이스케이프하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿