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

F.7. Citext

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

F.7.1. 이론적 해석

사례에 민감한 일치를 수행하는 표준 접근 방식스포츠 토토 결과Lower비교할 때 기능 값, 예를 들어

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

이것은 합리적으로 잘 작동하지만 여러 가지가 있습니다 단점 :

  • 그것은 당신의 SQL 진술을 장황하게 만듭니다 사용하는 것을 기억해야Lower열과 쿼리 값 모두에서

  • 기능을 작성하지 않는 한 색인을 사용하지 않습니다. 색인 사용Lower.

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

thecitext데이터 유형을 사용하면 가능합니다 전화 제거낮은sql 쿼리, 기본 키가 대소 문자를 사용하도록 허용합니다.citext텍스트대문자 및 소문자 문자는 규칙에 따라 다릅니다. 데이터베이스의LC_CTYPE설정. 다시 말하지만,이 동작은 사용과 동일합니다.Lower쿼리. 그러나 끝났기 때문에 데이터 유형에 따라 투명하게, 당신은 기억할 필요가 없습니다. 질문에 특별한 일을하십시오.

F.7.2. 어떻게 사용하려면

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

테이블 사용자 만들기 (
    Nick Citext 1 차 키,
    텍스트를 무효로 전달하십시오
);

사용자 값 ( 'larry', md5 (random () :: text))에 삽입;
사용자 값 ( 'tom', md5 (random () :: text))에 삽입;
사용자 값에 삽입 ( 'Damian', md5 (random () :: text));
사용자 값 ( 'Neal', Md5 (random () :: text))에 삽입;
사용자 값에 삽입 ( 'bjørn', md5 (random () :: text));

nick = 'larry'; 사용자 중 * 선택

theselect명령문이 반환됩니다 튜플 한 명,Nick열로 설정되었습니다Larry및 쿼리 forLarry.

F.7.3. 문자열 비교 동작

Citext비교를 수행합니다 각 문자열을 소문자로 변환합니다 (마치Lower호출) 일반적으로 결과. 따라서 예를 들어 두 줄이 고려됩니다 동일 ifLower생산할 것입니다 그들과 동일한 결과.

사례에 민감한 콜라이트를 밀접하게 모방하기 위해 가능한 한citext-특이 적 다수의 스트링 처리 연산자 버전 기능. 예를 들어, 정규 표현 연산자~and~*적용될 때 동일한 동작을 전시합니다citext: 둘 다 케이스 비밀리에 일치합니다. 그만큼 도 마찬가지입니다! ~and! ~*뿐만 아니라좋아요운영자~~and~~*! ~~! ~~*. 일치하고 싶다면 사례 감지적으로, 당신은 운영자의 주장을에 캐스팅 할 수 있습니다.텍스트.

마찬가지로 다음 모든 기능이 일치합니다 그들의 주장이있는 경우 사례에 관계없이Citext:

  • regexp_matches ()

  • regexp_replace ()

  • regexp_split_to_array ()

  • regexp_split_to_table ()

  • 대체 ()

  • split_part ()

  • strpos ()

  • Translate ()

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

F.7.4. 제한

  • citext의 사례 홀드 동작 에 따라 다릅니다.LC_CTYPE설정 데이터베이스. 그러므로 값을 비교하는 방법은입니다 데이터베이스가 생성 될 때 결정됩니다. 그것은 진정으로 아닙니다 유니 코드에 의해 정의 된 용어에서 사례에 민감합니다 기준. 효과적으로, 이것이 의미하는 바는 당신은 당신의 Collation에 만족합니다. 당신은 행복해야합니다citext의 비교. 하지만 당신이 있다면 데이터베이스, 사용자에 저장된 다른 언어의 데이터 한 언어 중 쿼리 결과가 Collation이 다른 언어를위한 경우 예상됩니다.

  • 스포츠 토토 결과9.1, 당신은 A를 첨부 할 수 있습니다.Collate사양citext열 또는 데이터 값. 현재,citext운영자는 비 디폴트를 존중합니다Collate비교하는 동안 사양 케이스 폴드 줄이지만 초기 접이식은 소문자입니다 항상 데이터베이스에 따라 수행됩니다LC_CTYPE설정 (즉, 마치 마치"기본값"). 두 단계 모두가 두 단계로 변경 될 수 있습니다. 입력을 따르십시오Collate사양.

  • citext|텍스트​​운영자가 기능하기 때문에 그리고 b- 트리 비교 함수는 데이터를 데이터로 변환하여 비교를 위해 소문자로 변환합니다. 그것은, 그러나 사용하는 것보다 약간 더 효율적입니다Lower사례에 민감하지 않습니다 어울리는.

  • Citext당신이 많은 도움이되지 않습니다 일부 컨텍스트에서 사례에 민감하게 비교하기위한 데이터가 필요합니다 다른 맥락에서는 사례에 비해. 표준 답변 사용하는 것입니다.텍스트수동으로 입력하십시오 사용Lower사례 비교를 비교해야합니다. this works all 사례에 민감한 비교가 필요한 경우에만 맞습니다 드물게. 대부분의 경우에 민감한 동작이 필요하다면 시간과 사례에 민감한 것은 저장을 고려하십시오 데이터citext명시 적으로 열을에 캐스팅텍스트언제 사례에 민감한 비교를 원합니다. 어느 상황에서나, 당신 두 가지 유형의 검색을 원한다면 두 가지 인덱스가 필요합니다. 빠르십시오.

  • 포함하는 스키마citext운영자는 현재에 있어야합니다search_path(일반적으로public); if it is not, the normal 사례에 민감한텍스트운영자가 될 것입니다 대신 호출.

F.7.5. 작가

David E. Wheeler

원래 영감citext모듈 Donald Fraser에 의해.