이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : F.9. Citext-윈 토토 민감하지 않은 문자열 유형버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

F.8. Citext

thecitext모듈은 사례에 민감한 문자열 유형을 제공합니다.citext. 본질적으로 내부적으로 호출Lower값을 비교할 때. 그렇지 않으면 거의 정확히 동작텍스트.

F.8.1. 이론적 해석

|PostgreSQLLower값을 토토 커뮤니티할 때 함수

선택 *에서 탭에서 where (col) = holl (?);

이것은 합리적으로 잘 작동하지만 많은 단점이 있습니다.

  • 그것은 당신의 SQL 진술을 장악하게 만들고, 항상 사용하는 것을 기억해야합니다Lower열과 쿼리 값 모두에서

  • 기능을 사용하여 기능 색인을 작성하지 않으면 인덱스를 사용하지 않습니다.Lower.

  • 열을 |고유 한또는기본 키, 암시 적으로 생성 된 인덱스는 대소 문자에 민감합니다. 따라서 사례에 민감하지 않은 검색에는 쓸모가 없으며 독창성 사례를 강력하게 시행하지 않습니다.

thecitext데이터 유형은 전화를 제거 할 수 있습니다LowerSQL 쿼리에서 기본 키가 대소 문자를 사용하도록 허용합니다.citext처럼 LOCALE-AWER, are입니다.텍스트, 이는 대문자와 소문자의 일치가 데이터베이스 규칙에 따라 다르다는 것을 의미합니다.LC_CTYPE설정. 다시 말하지만,이 동작은 사용과 동일합니다.Lower쿼리. 그러나 데이터 유형에 의해 투명하게 수행되기 때문에 쿼리에서 특별한 일을하는 것을 기억할 필요가 없습니다..

F.8.2. 사용 방법

여기에 간단한 예제가 있습니다 :

테이블 사용자 만들기 (

theselect명령문은이지만 튜플을 반환합니다.Nick열이 설정되었습니다Larry그리고 쿼리는입니다.Larry.

F.8.3. 문자열 토토 커뮤니티 동작

citext각 문자열을 소문자로 변환하여 토토 커뮤니티를 수행합니다 (Lower호출)와 결과를 정상적으로 토토 커뮤니티합니다. 예를 들어, 두 줄은 동일하게 간주됩니다.Lower동일한 결과를 얻을 것입니다.

가능한 한 가깝게 사례에 민감한 콜라주를 모방하기 위해citext-여러 스트링 처리 연산자 및 함수의 특이 적 버전. 예를 들어, 정규 표현 연산자~and~*적용될 때 동일한 동작을 보여줍니다citext: 둘 다 케이스 비밀리에 일치합니다. 똑같은!~and!~*뿐만 아니라Like운영자~~and~~*!~~and!~~*. 사례에 민감하게 일치 시키려면 운영자의 주장을에 캐스팅 할 수 있습니다.텍스트.

마찬가지로, 다음과 같은 모든 기능은 인수가 인수하는 경우 사례를 사용하지 않는 일치를 수행합니다citext:

  • regexp_match ()

  • regexp_matches ()

  • regexp_replace ()

  • regexp_split_to_array ()

  • regexp_split_to_table ()

  • 대체 ()

  • split_part ()

  • strpos ()

  • Translate ()

regexp 함수의 경우 사례에 관계없이 일치하려면를 지정할 수 있습니다c깃발을 강제하여 케이스에 민감한 경기를 강제합니다. 그렇지 않으면, 당신은에 캐스트해야합니다.텍스트사례에 민감한 동작을 원하는 경우 이러한 기능 중 하나를 사용하기 전에.

F.8.4. 제한

  • citext의 케이스 홀드 동작은에 따라 다릅니다.LC_CTYPE데이터베이스 설정. 따라서 값을 토토 커뮤니티하는 방법은 데이터베이스가 생성 될 때 결정됩니다.citext의 토토 커뮤니티. 그러나 데이터베이스에 저장된 다른 언어로 된 데이터가있는 경우 한 언어 사용자는 쿼리 결과가 다른 언어에 대한 경우 쿼리 결과가 예상되지 않을 수 있습니다.

  • PostgreSQL9.1, a를 첨부 할 수 있습니다Collate사양citext열 또는 데이터 값. 현재,citext운영자는 비 디폴트를 존중합니다Collate사양에 따른 문자열을 비교하는 동안 사양이지만 초기 접이식은 데이터베이스에 따라 항상 수행됩니다LC_CTYPE설정 (즉, 마치 마치"기본값"가 제공되었습니다). 이것은 미래의 릴리스에서 변경 될 수 있으므로 두 단계 모두 입력을 따릅니다Collate사양.

  • citext만큼 효율적이지 않습니다텍스트운영자 기능과 B- 트리 비교 함수는 데이터의 사본을 만들어 소문자로 변환해야합니다. 그러나 사용하는 것보다 약간 더 효율적입니다Lower사례에 민감한 일치를 얻으려면

  • citext다른 상황에서는 일부 상황에서 사례에 민감하게 토토 커뮤니티하기 위해 데이터가 필요하다면 많은 도움이되지 않습니다. 표준 답변은 사용하는 것입니다.텍스트입력하고 수동으로Lower사례 토토 커뮤니티를 토토 커뮤니티해야 할 때 기능; 이것은 사례에 민감하지 않은 토토 커뮤니티가 드물게 필요하다면 잘 작동합니다.citext그리고 열을 명시 적으로텍스트사례에 민감한 토토 커뮤니티를 원할 때. 두 가지 상황에서는 두 가지 유형의 검색이 빠르기를 원한다면 두 가지 인덱스가 필요합니다.

  • 포함하는 스키마citext운영자는 현재에 있어야합니다search_path(일반적으로public); 그렇지 않은 경우 정상적인 사례에 민감한텍스트운영자가 대신 호출됩니다.

F.8.5. 작가

David E. Wheeler

원래 영감citextDonald Fraser의 모듈.