今天看到這個Sql語句,之前聽說過,但是並未弄懂,因此在此特意做下筆記:
userName varchar(20) collate chinese_prc_ci_as null
1.首先,collate是一個子句,可應用於數據庫定義或列定義以定義排序規則,或應用於字符串表達式以應用排序規則投影
::={windows_collation_name}|{sql_collation_name}
參數:collate_name是應用於表達式列定義或數據庫定義的排序規則的名稱collation_name 可以只是指定的 Windows_collation_name 或 SQL_collation_name
Windows_collation_name: 是 Windows 排序規則的排序規則名稱參見 Windows 排序規則名稱
SQL_collation_name :是 SQL 排序規則的排序規則名稱參見 SQL 排序規則名稱
2.什麼叫排序規則呢?
MS是這樣描述的:"在 Microsoft SQL Server 2000 中,
字符串的物理存儲由排序規則控制排序規則指定表示每個字符的位模式以及存
儲和比較字符所使用的規則"
SQLSERVER
select * from ::fn_helpcollations()
排序規則名稱由兩部份構成,前半部份是指本排序規則所支持的字符集
如:
Chinese_PRC_CS_AI_WS
前半部份:指UNICODE字符集,Chinese_PRC_指針對大陸簡體字UNICODE的排序規則
排序規則的後半部份即後綴 含義:
_BIN 二進制排序
_CI(CS) 是否區分大小寫,CI不區分,CS區分
_AI(AS) 是否區分重音,AI不區分,AS區分
_KI(KS) 是否區分假名類型,KI不區分,KS區分
_WI(WS) 是否區分寬度 WI不區分,WS
區分大小寫:如果想讓比較將大寫字母和小寫字母視為不等,請選擇該選項
區分重音:如果想讓比較將重音和非重音字母視為不等,請選擇該選項如果選擇該選項,
比較還將重音不同的字母視為不等
區分假名:如果想讓比較將片假名和平假名日語音節視為不等,請選擇該選項
區分寬度:如果想讓比較將半角字符和全角字符視為不等,請選擇該選項
3.在MySql中也有對應的字符排序規則(在MySql 5.1中的10.10.MySql支持的字符集合校對中)
如圖:
例如:
創建一個使用utf8字符集,並帶校對規則的user數據庫
create database if not exists user character set UTF8 collate utf8_general_ci;