Mr.Tです、こんにちは。
計算列を今まで利用することがなかったのだけど、こういうときに使えるかもとやってみたメモ。
単純なマスターとして、コード、コード名だけを持つテーブルAを考えてみます。
| コード | コード名 |
| 1 | これは1番目 |
| 10 | これは10番目 |
| 2 | これは2番目 |
コード、コード名ともにフィールド型はvarcharです。
コードは、基本、数字(0~9)のみを利用するとしている場合、
select コード From A order by コード
とすると、
コード
------------
1
10
2
------------
になります。
でも、本当に欲しい並びは、
コード
------------
1
2
10
------------
です。
並び順をフィールドに追加することも可能ですが、それをメンテナンスしなくちゃならないので、
その手間をかけないように、計算列「並び順」を一つ追加します。
今回のコード形態では、桁数をそろえるような00001というパディングがないため、計算列の値には、文字長を示すLen(コード)でいいでしょう。
もし、パディングがあった場合は、文字型→数値型に変換するような式をかけばよいと思います。
更に、このコードには数字以外が入ってきた場合は、文字コード順で並べられても問題ないとします。
後は、並べるときに、
select * from A order by並び順,コード
とすると、
コード
------------
1
2
10
------------
に出てくることになります。
まあ、本来、コードのフィールドを数値型にしておけば問題ないんですが。