データベースは、ソートフィールド(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を返します。
終わり;