MySQL-自定義排序函數

字符集(Charset)

ASCII

基於拉丁字母的計算機編碼,通用單字節編碼,1個字節代表1個字符。主要針對英語和西歐語言。漢子爲多字節數據,ASCII是無法編碼中文漢子的。

GB2312

國標編碼,由中國製定編碼字符集,一般用2個字節代表一個字符,GB2312對中文進行分區分級編碼,共收錄7000多個。

Unicode

爲了統一各種語言編碼規則而生,又被稱爲 統一編碼。統一使用2個字節代表1個字符,特殊字符采用4字節。

UTF-8

爲了解決Unicode編碼的一些缺陷,比如英文及符號屬於單字節字符,採用2字節編碼,浪費空間。UTF-8字符屬於動態編碼字符集,是在Unicode基礎上進行改進的一種編碼規則。根據不同數字大小進行編碼爲1-6個字節,英文及符號:1字節,中文:3字節,生僻字:4-6字節。

排序方式(Collation)

collation 用於指定數據集的排序規則,以及字符集的比對規則,當我們在進行order by 時,mysql服務器會按照設置的collation進行比對數據。

分類

  • < character set> _ <language/other> _ <ci/cs>
    如:utf8_general_ci , 表示字符集爲utf-8,不區分大小寫(ci, case insensitive), utf-8沒有cs(case sensitive)。

同一個字符集的不同collation的區別在於 排序,比對精確度以及性能三方面。
精準度:utf8_unicode_ci > utf8_general_ci
性能:utf8_general_ci > utf8_unicode_ci

在ci情況下,比如使用like “%ab%” , 那麼將匹配出 ab, aB, Ab, AB 相關的信息。

  • < character set>_bin
    utf8_bin: 將字符串中每一個字符用二進制數據存儲,區分大小寫。

select 機制

MySQL 函數

window 文件排序規則

結合 ORDER BY 實現精準排序函數

排序函數優化

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章