mysql 在預設情況下使用order by column_name desc/asc 進行排序的時候,排序規則是按照ascii碼進行排序的
order by 欄位名稱+0 desc/asc的形式進行排序mysql會將字串型別的資料當作數值進行處理,但是存在效率問題,不推薦使用varchar/char型別來儲存數值,這樣會帶來不不必要的問題order by 欄位名稱*1 desc/asc的形式進行排序
# 建立表
create
table testsort(
id int(11) primary
key auto_increment,
name varchar(25),
age varchar(20)
); # 插入三條資料
insert
into testsort (name,age) values ("劉德華","57");
insert
into testsort (name,age) values ("張國榮","60");
insert
into testsort (name,age) values ("黃日華","23");
#根據id數值排序
select * from testsort order
by id;
#根據age字串排序
select * from testsort order
by age+0;
select * from testsort order
by age*1;
對字串排序
def main 字串 s helloworld 轉換成陣列 l list s 對陣列排序,注意,該方法沒有返回值 l.sort 轉換成陣列 s join l print s 結果如下 hwdellloor if name main main 然後sort再join。def main s hello...
mysql 包含字串和數字排序
今天解決了乙個關於mysql字串排序的很奇怪的問題,在資料裡面定義的是varchar型別,實際存放的是int型別的資料,按一下查詢語句進行排序 所以想到用先排序長度,再排序大小 substring index pdfname,1 1 select id from testtable order by...
mysql按字串數字排序處理
公司不知是誰設計的表選單排序字段竟然設定成了字串。create table s menu id int 11 not null auto increment,parent id int 11 default null,order varchar 5 default null,menu name va...