PostgreSQL의 정규식 LIKE 절: LIKE 대 ~ 연산자 사용
PostgreSQL에서는 정규식을 활용하여 특정 패턴을 검색할 수 있습니다. 데이터 내에서. 그러나 표현에 문제가 발생하는 경우 뉘앙스와 제한 사항을 이해하는 것이 중요합니다.
도전 과제: 세 번째 문자가 일치하지 않음
다음 쿼리를 고려해보세요. :
SELECT * FROM table WHERE value LIKE '00[1-9]%' -- (third character should not be 0)
세 번째 문자 '0'이 포함된 값을 제외하려는 의도에도 불구하고 이 쿼리는 해당 기준에 맞지 않습니다. 대신 '00'으로 시작하는 모든 값과 일치합니다.
해결책: ~ 연산자 사용
대괄호 표현식을 효과적으로 활용하려면 정규 표현식 연산자를 사용해야 합니다. ~:
SELECT * FROM tbl WHERE value ~ '^00[^0]'
^ ...은 문자열의 시작을 나타내며 패턴이 다음 위치에서만 일치하도록 합니다. 시작.
1 ... '0'이 아닌 모든 것과 일치하는 문자 클래스를 나타냅니다.
최적화된 접근 방식
최적의 성능을 위해서는 쿼리를 LIKE 두 개로 나누는 것이 좋습니다. 표현식:
SELECT * FROM tbl WHERE value LIKE '00%' -- starting with '00' AND value NOT LIKE '000%' -- third character is not '0'
LIKE는 정규 표현식보다 덜 강력하지만 일반적으로 더 빠릅니다. 경제적인 LIKE 표현식으로 후보를 제한함으로써 전반적인 쿼리 속도가 향상됩니다.
또한 PostgreSQL에서 인덱스를 활용할 수 있으므로 LIKE '00%' 값과 같은 왼쪽 고정 표현식을 활용하는 것이 중요합니다. 이는 큰 테이블에 특히 유용하지만 더 복잡한 정규식은 인덱싱을 지원하지 않을 수 있습니다.
위 내용은 PostgreSQL 문자열 일치: 효율적인 정규식 쿼리를 위한 LIKE 대 ~?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!