문제

에 따르면 sqlite3 문서,

각 열 이름을 따르는 Collate 절은 해당 열의 텍스트 항목에 사용되는 Collating 순서를 정의합니다.기본 충전 시퀀스는 Create Table 문에서 해당 열에 대해 정의 된 Collating 시퀀스입니다.또는 Collating Sequence가 달리 정의되지 않으면 내장 된 바이너리 컴퓨팅 시퀀스가 ​​사용됩니다.

조합 시퀀스의 기능은 무엇이며 BINARY 조합 시퀀스는 무엇입니까?

도움이 되었습니까?

해결책

SQL 엔진이 내부적으로 데이터를 정렬하는 방식입니다.이진 대조는 제안된 대로 이진 비교를 수행합니다.일반적으로 가장 빠른 데이터 정렬이지만 수량화한 적은 없습니다. 비트 패턴을 확인하므로 대소문자와 악센트를 구분하지 않습니다.

다른 팁

이진 데이터 정렬은 유니코드 테이블에서처럼 문자열을 바이트 단위로 비교합니다.예를 들어:A,B,a,b.대소문자를 구분하는 순서는 다음과 같습니다.a,A,b,B.

문자열 비교가 매우 간단하고 빠르기 때문에 이진 대조의 장점은 속도입니다.일반적으로 이진 인덱스는 정렬 시 예상되는 결과를 생성하지 못할 수 있지만 정확한 일치의 경우에는 유용할 수 있습니다.

COLLATE NOCASE는 대소문자 구분 쿼리에도 영향을 미칩니다.

다음 값을 포함하는 열이 있는 경우:'아아', '아아'

select * from table where col = 'aa'

COLLATE NOCASE를 사용하여 열을 생성한 경우 'aa'와 'aA'가 모두 반환됩니다.그렇지 않고 지정하지 않으면 'aa'만 반환됩니다.

쿼리에서 지정할 수도 있습니다(COLLATE NOCASE를 사용하여 열을 생성한 경우보다 속도가 느립니다).

select * from table where col = 'aa' COLLATE NOCASE
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top