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