求教一個MYSQL數字和字母混合排序問題

來源:互聯網
上載者:User
資料庫裡有一個表a,表a有一個欄位b為字串類型,裡面的資料大多為88A242 ,88A106,88A109,92A129,92A068,2000A291,2000A216,2014A063,2014A315這樣的字串,求教各位大神,如何排序?

排序後應為: 88A106,88A109,88A242,92A068,92A129,2000A216,2000A291,2014A063,2014A315


回複討論(解決方案)

$s='88A242,88A106,88A109,92A129,92A068,2000A291,2000A216,2014A063,2014A315';$arr=explode(',',$s);natsort($arr);echo "
";print_r($arr);echo "
";

$str='88A242,88A106,88A109,92A129,92A068,2000A291,2000A216,2014A063,2014A315';$str1=str_replace('A','.',$str);$arr=explode(',',$str1);sort($arr,SORT_NUMERIC);$str2=implode(',',$arr);$str3=str_replace('.','A',$str2);echo $str3;

88A106,88A109,88A242,92A068,92A129,2000A216,2000A291,2014A063,2014A315

不好意思,忘記說明了,因為是從資料庫裡,所以希望讀出來的時候就已經是排好的,而不是需要再用php處理的

那你為什麼不排序好後,再存入資料庫,無能為力了...

create temporary table T (a varchar(10));insert into T (a) values ('88A242'),('88A106'),('88A109'),('92A129'),('92A068'),('2000A291'),('2000A216'),('2014A063'),('2014A315');select * from T order by lpad(a, 10, '0');
a 88A106 88A109 88A242 92A068 92A129 2000A216 2000A291 2014A063 2014A315 

建議存資料的時候同時存入hash值,尋找的時候按照hash排序
至於怎麼計算hash值,查查,不難。

create temporary table T (a varchar(10));insert into T (a) values ('88A242'),('88A106'),('88A109'),('92A129'),('92A068'),('2000A291'),('2000A216'),('2014A063'),('2014A315');select * from T order by lpad(a, 10, '0');
a 88A106 88A109 88A242 92A068 92A129 2000A216 2000A291 2014A063 2014A315 



可以啦,求解?,lpad(a, 10, '0')

LPAD(str,len,padstr)
返回字串 str, 其左邊由字串padstr 填補到len 字元長度。假如str 的長度大於len, 則傳回值被縮短至 len 字元。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    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.