Mysql實現字元位數及字元大小公升序排序

2021-10-05 07:33:25 字數 658 閱讀 5361

當我們需要對某一欄位進行公升序排序的時候,如果這個欄位是字元型別的資料,排序時會去逐位比較字元,例如:

'1234』和』21』兩個字串,按照慣性思維,肯定是』21』排在前面,但是由於字元型別資料比較時會逐位比較,所以,應當是『1234』排在前面。那麼,怎麼才能讓『21』排在前面呢?

有兩種實現方式:

一、先進行位數排序,再進行字元排序:

select dict_no, dict_name from dictionary order

by length(dict_no)

, dict_no asc

;

多個排序條件,會按照第乙個排序排序條件為基準排序,即先按照dict_no的長度進行排序,當dict_no長度一致的時候,會按照第二個排序條件進行排序,即字元。

二、將dict_no轉化為數字型別,再進行排序:

select dict_no, dict_name from dictionary order

by cast(dict_no as

decimal

)asc

;

這種方式適用於純數字字串。當字串為『21abd』和』21ab』時,這種排序方式便失去了作用,無法對這兩個字元進行比較,因為轉化成數字後都是21。

mysql字元型別總結及常用字元函式

常用字串函式 concat s1,s2,s3.連線s1,s2,sn為乙個字串 insert str,x,y,instr 將字串str從x位置開始,y個字串替換為字串instr lower str 返回str小寫字串 upper str 將字串str的所有字母變成大寫字母 left str,n 返回字...

MySQL字符集及MySQL編碼轉換

個人建議,資料庫字符集盡量使用utf8 utf 8 以使你的資料能很順利的實現遷移,因為utf8字符集是目前最適合於實現多種不同字符集之間的轉換的字符集,儘管你在命令列工具上無法正確檢視資料庫中的內容,我依然強烈建議使用utf8作為預設字符集.接下來是完整的乙個例子 1.建立資料庫表 mysql c...

MySQL字符集及MySQL編碼轉換

今天找到這篇文章,裡面提到從latin1到utf8的mysql編碼轉換。收藏一下,最近要將所有的資料庫都轉一次,一直錯誤的使用latin1,再不轉以後麻煩大了。出處 未知 個人建議,資料庫字符集盡量使用utf8 utf 8 以使你的資料能很順利的實現遷移,因為utf8字符集是目前最適合於實現多種不同...