スケジューリング問題に1.1,1.1.1,10.1番号を解決する上でのMySQL

データベースは、ソートフィールド(varchar型のタイプ)を読み取りがあります。

1

1.1

2

2.1

2.1.1

10.1

 

私は解決策は、マージフィールドを分離することであると思います:

として

1.1パーティション001001にマージ

2パーティション002に結合

10.1分圧器、言っ合併010001

その後、昇順にソートすることができます。

 

添付実装された機能

作成定義= 'localhostの@ `root` ` `関数split_pad`(STR VARCHAR(1000)、区切りVARCHAR(1))が戻るのVARCHAR(200)が
開始
    宣言cur_strのVARCHAR(200)。
    sub_len int型を宣言します。
    宣言sub_strのVARCHAR(200)。
    ret_str VARCHAR(200)を宣言する。
    LOOP_COUNT int型を宣言します。
   
    cur_str = STRを設定します。
    sub_len = -1を設定します。
    セットret_str = '';
    セットLOOP_COUNT = 0。
   
    リピート
        (sub_len cur_str、+ 2)セットcur_str =サブストリング。
        セットsub_str = SUBSTRING_INDEX(cur_str、デリミタ、1)。
        セットsub_len =長さ(sub_str)。
       
        sub_len!= 0の場合は、
           セットret_str =連結(ret_str、LPAD(sub_str、3、 '0'));
        場合は終了。
       
        セットLOOP_COUNT = LOOP_COUNT + 1。
    sub_len = 0になるまで
    エンドリピート;
   
    ret_strを返します。
終わり;

 

公開された38元の記事 ウォンの賞賛4 ビュー19万+

おすすめ

転載: blog.csdn.net/tomatozq/article/details/8670251