thecitext
모듈은 사례에 민감한 문자열 유형을 제공합니다.citext
. 본질적으로 내부적으로 호출Lower
값을 비교할 때. 그렇지 않으면 거의 정확히 동작텍스트
.
사례에 민감하지 않은 일치를 수행하는 표준 접근 방식토토 사이트 추천Lower
값을 비교할 때 함수
선택 *에서 탭에서 where (col) = holl (?);
이것은 합리적으로 잘 작동하지만 많은 단점이 있습니다.
그것은 당신의 SQL 진술을 장황하게 만들고, 당신은 항상 사용하는 것을 기억해야합니다Lower
열과 쿼리 값 모두에서
기능을 사용하여 기능 색인을 작성하지 않는 한 색인을 사용하지 않습니다Lower
.
열을 |고유 한
또는기본 키
, 암시 적으로 생성 된 인덱스는 대소 문자에 민감합니다. 따라서 사례에 민감하지 않은 검색에는 쓸모가 없으며 독창성 사례를 강력하게 시행하지 않습니다.
thecitext
데이터 유형은 전화를 제거 할 수 있습니다Lower
SQL 쿼리에서 기본 키가 대소 문자를 사용하도록 허용합니다.citext
텍스트
, 이는 대문자와 소문자의 일치가 데이터베이스 규칙에 따라 다르다는 것을 의미합니다LC_CTYPE
설정. 다시 말하지만,이 동작은 사용과 동일합니다.Lower
쿼리. 그러나 데이터 유형에 의해 투명하게 수행되기 때문에 쿼리에서 특별한 일을하는 것을 기억할 필요가 없습니다..
여기에 간단한 예제가 있습니다 :
테이블 사용자 만들기 (
theselect
명령문은이지만 튜플을 반환합니다.Nick
열로 설정되었습니다Larry
그리고 쿼리는입니다.Larry
.
citext
각 문자열을 소문자로 변환하여 비교를 수행합니다 (Lower
호출)와 결과를 정상적으로 비교합니다. 예를 들어, 두 줄은 동일하게 간주됩니다.Lower
그들과 동일한 결과를 생성합니다.
가능한 한 가깝게 사례에 민감한 콜레이션을 모방하기 위해citext
-여러 스트링 처리 연산자 및 함수의 특이 적 버전. 예를 들어, 정규 표현 연산자~
and~*
적용될 때 동일한 동작을 전시합니다citext
: 둘 다 케이스 비면성적으로 일치합니다. 똑같은!~
and!~*
뿐만 아니라좋아요
운영자~~
and~~*
및!~~
and!~~*
. 사례에 민감하게 일치 시키려면 운영자의 주장을에 캐스팅 할 수 있습니다.텍스트
.
마찬가지로, 다음과 같은 모든 기능은 인수가 인수하는 경우 사례를 사용하지 않는 일치를 수행합니다citext
:
regexp_match ()
regexp_matches ()
regexp_replace ()
regexp_split_to_array ()
regexp_split_to_table ()
대체 ()
split_part ()
strpos ()
Translate ()
regexp 함수의 경우, 사례에 관계없이 일치하려면를 지정할 수 있습니다“c”깃발을 강제하여 케이스에 민감한 경기를 강제합니다. 그렇지 않으면, 당신은에 캐스트해야합니다.텍스트
사례에 민감한 동작을 원하는 경우 이러한 기능 중 하나를 사용하기 전에.
citext
의 케이스 홀드 동작은에 따라 다릅니다.LC_CTYPE
데이터베이스 설정. 따라서 값을 비교하는 방법은 데이터베이스가 생성 될 때 결정됩니다.citext
의 비교. 그러나 데이터베이스에 저장된 다른 언어로 된 데이터가있는 경우 한 언어 사용자는 쿼리 결과가 다른 언어에 대한 경우 쿼리 결과가 예상되지 않을 수 있습니다.
토토 사이트 추천9.1, a를 첨부 할 수 있습니다Collate
사양citext
열 또는 데이터 값. 현재,citext
운영자는 비 기본을 존중합니다Collate
사양 사례를 비교하는 동안 사양이지만 초기 접이식은 데이터베이스에 따라 항상 수행됩니다.LC_CTYPE
설정 (즉, 마치"기본값"
가 제공되었습니다). 이것은 미래의 릴리스에서 변경 될 수 있으므로 두 단계 모두 입력을 따릅니다Collate
사양.
citext
만큼 효율적이지 않습니다텍스트
운영자 기능과 B- 트리 비교 함수는 데이터의 사본을 만들어 소문자로 변환해야합니다. 그러나 사용하는 것보다 약간 더 효율적입니다Lower
사례에 민감한 일치를 얻으려면
citext
다른 상황에서는 경우와 비교하여 사례를 비교하기 위해 데이터가 필요한 경우 많은 도움이되지 않습니다. 표준 답변은 사용하는 것입니다.텍스트
입력하고 수동으로Lower
사례 비교를 비교해야 할 때 기능; 이것은 사례에 민감하지 않은 비교가 드물게 필요하다면 잘 작동합니다.citext
및 열을 명시 적으로텍스트
사례에 민감한 비교를 원할 때. 두 가지 상황에서는 두 가지 유형의 검색이 빠르기를 원한다면 두 가지 인덱스가 필요합니다.
포함하는 스키마citext
운영자는 현재에 있어야합니다search_path
(일반적으로public
); 그렇지 않은 경우 정상적인 사례에 민감한텍스트
운영자가 대신 호출됩니다.