MySql之定序問題(2),mysql定序

來源:互聯網
上載者:User

MySql之定序問題(2),mysql定序

今天看到這個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;


mysql資料庫怎可以兩個條件排序?

select * from mysql order by 欄位一 asc ,欄位二 asc,欄位三 desc;
 
Mysql 排序問題

你給出的結果要求的定序是什嗎?無法理解。排序無非是依據數字值和字元值。數字列類型很容易理解。字元類型就有很多。比如依據轉換後的ASIIK碼,漢字有首拼,筆畫數,等等呢個。

SELECT username FROM `cmstop_member` WHERE username LIKE "bi%" ORDER BY CASE username WHEN username LIKE "bi%" THEN 1 ELSE 0 END

這個應該可以達到你的要求。匹配輸入的結果再前顯示。但是沒有對,去除輸入符之後的字串排序
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.