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

PostgreSQL에서 정확한 패턴 일치를 위해 특수 문자를 이스케이프하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-20 04:30:02460검색

How to Escape Special Characters for Accurate Pattern Matching in PostgreSQL?

PostgreSQL에서 패턴 일치를 위한 문자열 이스케이프

사용자 제공 문자열에 %와 같은 특수 패턴 문자가 포함될 수 있는 PostgreSQL의 패턴을 정확하게 일치시키려면 , 정확한 일치를 보장하려면 이러한 문자를 이스케이프 처리하는 것이 좋습니다. 또는 애플리케이션이 이스케이프 프로세스를 처리할 수 있습니다.

PostgreSQL에서는 % 및 _와 같은 문자를 를 사용하여 인용해야 하지만 ESCAPE 절을 사용하여 사용자 정의할 수 있습니다. 문자 그대로 문자를 일치시키려면 두 번 인용해야 합니다.

예를 들어 'john%node1^node2.uucp@' 패턴을 이스케이프 문자로 ^와 일치시키려면 다음 쿼리를 사용하십시오.

... WHERE field LIKE 'john^%node1^^node2.uucp@%' ESCAPE '^'

그러나 Standard_conforming_strings가 비활성화된 경우(PG 9.1에서는 기본적으로 활성화되어 있음) 다른 목적으로 활용됩니다. 또한 주입 시나리오에서는 클라이언트측 인용이 필요할 수 있습니다.

Go에서 일반 처리를 위해 표준_적합성_문자열과 대체 인용 문자를 모두 고려하면 다음 쿼리를 사용할 수 있습니다.

db.Query("SELECT * from USERS where name like replace(replace(replace(,'^','^^'),'%','^%'),'_','^_') ||'%' ESCAPE '^'",
     variable_user_input);

이것은 서버 측에서 특수 문자의 이스케이프 및 교체를 처리하여 SQL 삽입을 방지하고 정확한 패턴 일치를 보장합니다.

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.