使用字元集和校對順序
MySQL支援眾多的字元集。為查看所支援的字元集完整列表,使用以下語句:
輸入:
show character set;
分析:這條語句顯示所有可用的字元集以及每個字元集的描述和預設校對。
為了查看所支援校對的完整列表,使用以下語句:
輸入:
show collation;
分析:此語句顯示所有可用的校對,以及它們適用的字元集。可以看到有的字符集具有不只一種校對。例如, latin1 對不同的歐洲語言有幾種校對,而且許多校對出現兩次,一次區分大小寫(由 _cs 表示),一次不區分大小寫(以 _ci 表示)。
通常系統管理在安裝時定義一個預設的字元集和校對。此外,也可以在建立資料庫時,指定預設的字元集和校對。為了確定所使用的字元集和校對,可以使用以下語句:
輸入:
show variables like 'character%'; show variables like 'collation%';
實際上,字元集很少是伺服器範圍(甚至資料庫範圍)的設定。不同的表,甚至不同的列都可能需要不同的字元集,而且兩者都可以在建立表時指定。
為了給表指定字元集和校對,可使用帶子句的CREATE TABLE:
#輸入:
create table mytable ( columnn1 int, columnn2 varchar(10) )default character set hebrew collate hebrew_general_ci;
分析:此語句建立一個包含兩列的表,並且指定一個字元集和一個校對順序。
這個例子中指定了 CHARACTER SET 和 COLLATE 兩者。一般,MySQL如下決定使用什麼樣的字元集和校對。
1.如果指定 CHARACTER SET 和 COLLATE 兩者,則使用這些值。
2.如果只指定 CHARACTER SET ,則使用此字元集及其預設的校對(如SHOW CHARACTER SET 的結果所示)。
3.如果既不指定 CHARACTER SET ,也不指定 COLLATE ,則使用資料庫預設。
除了能指定字元集和校對的表範圍外,MySQL還允許對每個欄位設定它們,如下所示:
輸入:
create table mytable ( columnn1 int, columnn2 varchar(10), columnn3 varchar(10) character set latin1 collate latin1_general_ci latin_grneral_ci )default character set hebrew collate hebrew_general_ci;
分析:這裡對整個表以及一個特定的列指定了CHARACTER SET 和COLLATE 。
如前所述,校對在對用 ORDER BY子句檢索出來的資料排序時扮演重要的角色。如果你需要用與建立表格時不同的校對順序排序特定的SELECT 語句,可以在SELECT 語句本身進行:
輸入:
select * from customers order by lastname,firstname collate latin1_general_cs;
分析:此SELECT 使用COLLATE 指定一個備用的校對順序(在這個例子中,為區分大小寫的校對)。這顯然將會影響到結果排序的順序。
暫時區分大小寫 上面的 SELECT 語句示範了在通常不區分大小寫的表上進行區分大小寫搜尋的一種技巧。當然,反過來也是可以的。
SELECT 的其他 COLLATE 子句 除了這裡看到的在 ORDER BY子句 中使用以外, COLLATE 還可以用於 GROUP BY 、 HAVING 、聚集函數、別名等。
最後,值得注意的是,如果絕對需要,字串可以在字元集之間進行轉換。為此,使用 Cast() 或 Convert ()函數。
【相關推薦】
1. mysql免費影片教學
#2. MySQL字元集與校對順序簡介
4. MySQL事務-ROLLBACK,COMMIT用法詳解
#以上是MySQL使用字元集和校對順序使用教學課程的詳細內容。更多資訊請關注PHP中文網其他相關文章!