2010年11月07日

文字列のコードを、昇順、桁数の多い順に並び替える

入力桁数が不確定な文字列のコードを並び替える方法について
紹介します。

[サンプルデータ]
01
1
2
31
4
41
5
10
101


所属コードなど検索キーを先頭一致で、SQLやプログラムの中で
ソートをする必要がある場合があります。

通常の文字列ソートの場合次の様になると思います。

01
1
10
101
2
31
4
41
5

先頭一致で行った場合、若いコードでかつ、桁数の少ないコードが
先に来てしまうと、そちらですべて一致してしまい桁数の多いコードで
一致しなくなってしまいます。

その解決策としては、該当データを保持したままで、
ソート用のデータを生成し、そのデータをキーにしてソートをします。

1.ソートキー用のデータの後方に、'Z'文字で必要桁分埋めます。
(桁数埋め関数が無い場合は、入力桁いっぱいの桁数で、'Z'文字列を
 後方に追加します。1桁目から、入力桁分を切り足す事で、後方の空白を
 'Z'文字列で埋めた状態と一緒となります。)

01ZZZ
1ZZZZ
2ZZZZ
31ZZZ
4ZZZZ
41ZZZ
5ZZZZ
10ZZZ
101ZZ

2.昇順でソートします。
01ZZZ
101ZZ
10ZZZ
1ZZZZ
2ZZZZ
31ZZZ
41ZZZ
4ZZZZ
5ZZZZ

これで、昇順、桁数の多い順に並び替える事ができました。
実際に使用するデータは、'Z'文字列を付与していない
編集前のデータを使います。

プログラム内でソートするよりは、SQL文で上記編集内容でソートを行い。
データベースからの取得で処理を行ったほうが効率が良いです。

※データベースの違いや、プログラム言語によって処理方法や
 構文が微妙に異なるため、考え方のみを記述しています。
※実処理は、あえて記載していません。

人気ブログランキングへ人気ブログランキングへ 記事が参考となりましたら。ブログランキングバナーのクリックをお願いします。




[てぃーだブログ広告]

同じカテゴリー(プログラム全般)の記事

上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。

アクセスカウンタ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 3人
QRコード
QRCODE