標籤:技術 font 設定 指定 weight order character from code
資料庫需要適應各種語言和字元就需要支援不同的字元集(Character Set),每種字元集也有各自的定序(Collation)。
(注意:Collation原意為校對,校勘,但是根據實際使用情境,覺得還是翻譯為定序比較合適)
在絕大部分情形中,使用何種字元集和定序決定於伺服器,資料庫和表的層級,一般SQL操作不必關心這些。
以下操作均以MySQL為例。
查看資料庫支援的字元集與定序
查看字元集:
SHOW CHARACTER SET;
部分結果:
查看定序:(尾碼"_cs"或者"_ci"意思是區分大小寫和不區分大小寫(Case Sensitive & Case Insensitve))
SHOW COLLATION;
部分結果:
使用資料庫支援的字元集與定序
通常系統管理在安裝時定義一個預設的字元集和定序,
也可以在建立資料庫時對資料庫範圍,建表時對錶層級,甚至列層級設定字元集和定序。
> 為建資料庫時指定字元集和定序:
為了確定所用的字元集和定序,可以使用下列語句:
SHOW VARIABLES LIKE ‘character%‘;SHOW VARIABLES LIKE ‘collation%‘;
> 建表時指定表的字元集和定序:
1 CREATE TABLE mytable (2 column1 INT,3 column2 VARCHAR (10)4 ) DEFAULT CHARACTER SET hebrew5 COLLATE hebrew_general_ci;
不指定字元集和定序時使用資料庫預設設定,若指定了字元集沒有指定定序,則使用字元集的預設定序。
>建表時指定表和列的字元集和定序
CREATE TABLE mytable ( column1 INT, column2 VARCHAR (10), column3 VARCHAR (10) CHARACTER SET latin1 COLLATE latin1_general_ci) DEFAULT CHARACTER SET hebrew COLLATE hebrew_general_ci;
>自訂查詢語句中ORDER BY的定序
SELECT * FROM `mytable` ORDER BY `column1` COLLATE latin1_general_cs;
這裡的使用不限於ORDER BY,還有GROUP BY,聚集合函式等。
參考文章:
【1】MySQL比知必會 2009年1月第一1版 第27章 “全球化與本地化”
資料庫字元集與定序(Character Set And Collation)