>데이터 베이스 >MySQL 튜토리얼 >정규 표현식이 PostgreSQL의 LIKE 절에서 패턴 일치를 어떻게 향상시킬 수 있습니까?

정규 표현식이 PostgreSQL의 LIKE 절에서 패턴 일치를 어떻게 향상시킬 수 있습니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-20 14:44:12674검색

How Can Regular Expressions Improve Pattern Matching in PostgreSQL's LIKE Clause?

PostgreSQL LIKE 절의 정규 표현식

PostgreSQL에서 LIKE 절은 일반적으로 문자열 비교에서 패턴 일치에 사용됩니다. 그러나 LIKE 절의 유연성을 향상시키기 위해 정규식을 사용할 수도 있습니다. 정규식을 사용하는 것이 도움이 될 수 있는 일반적인 시나리오를 살펴보겠습니다.

문제:

다음 쿼리 조각을 고려하세요.

SELECT * FROM table WHERE value LIKE '00[1-9]%'
-- (third character should not be 0)

이 쿼리는 값 열이 '00'으로 시작하고 그 뒤에 1에서 9 사이의 숫자가 오는 행을 검색하는 것을 목표로 합니다. 0), 그 뒤에 임의 개수의 문자가 옵니다. 그러나 쿼리는 의도한 문자열 '0090D0DF143A'와 일치하지 않습니다.

해결책:

이 문제를 해결하려면 정규식 연산자 ~는 LIKE 연산자 대신 사용해야 합니다. 또한 원하는 동작을 달성하기 위해 정규식 자체를 수정할 수 있습니다.

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 및 NOT LIKE 절을 모두 활용하면 적용하기 전에 덜 복잡한 LIKE 표현식을 사용하여 후보 집합을 좁혀 효율성이 보장됩니다. 더 비싼 정규식 부정.

인덱스를 사용하면 이 예와 같은 간단한 정규식과 관련된 쿼리 속도를 높일 수 있습니다. 자세한 내용은 LIKE와 ~의 차이점에 대한 PostgreSQL 문서를 참조하세요.


    위 내용은 정규 표현식이 PostgreSQL의 LIKE 절에서 패턴 일치를 어떻게 향상시킬 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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