Sql 中Collate用法


今天查詢sqlite的時候需要不區分大小寫,查了下文檔,需要使用collate nocase.順便學習下collate的用法。

collate在sql中是用來定義排序規則的。排序規則其實就是當比較兩個字符串時,根據某種規則來確定哪個比較大,是否相等。各個數據庫支持不同的排序規則。

sqlite有三種build in的排序規則:

BINARY 二進制比較,直接使用memcmp()比較
NOCASE  將26個大寫字母轉換為小寫字母后進行與BINARY一樣的比較
RTRIM  和BINARY一樣,忽略結尾的空格

 

 

 

 

Sql server則比較復雜: 根據MSDN官方解釋 排序規則指定了表示每個字符的位模式。它還指定了用於排序和比較字符的規則。

排序規則具有下面的特征: 區分語言,區分大小寫,區分重音,區分假名

看一下SqlServer中的截圖:

 

 

collate的名字包括兩部分,前部分是表示字符集,后部分定義如下:

_BIN  指定使用向后兼容的二進制排序順序。
_BIN2  指定使用 SQL Server 2005 中引入的碼位比較語義的二進制排序順序。
_Stroke 按筆划排序
_CI(CS) 是否區分大小寫,CI不區分,CS區分
_AI(AS)  是否區分重音,AI不區分,AS區分
_KI(KS) 是否區分假名類型,KI不區分,KS區分
_WI(WS)  是否區分全半角,WI不區分,WS區分

 

 

 

 

 

 

還可以根據拼音,筆畫來排序。

如何設置排序規則

可以在數據庫(create database/alter database時指定),字段級別(create table/alter table時指定)使用Collate命令設置collate,字段級別優先級更高。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM