データベースで、データの一部として数字を含むテキスト フィールドがあり、ソートしようとすると、数字が順番に返されず、アルファベット順に「疑似」されます。
私はこの振る舞いを「期待」しており、それに満足しています。ただし、ユーザーは、可能であれば数値およびアルファベット順にソートするように要求しました。
例のデータ (ソート済み):
100
1001
1110
1010101E
2
200
22ER
Abd
Bre
顧客が - 「100」の前に「2」をソートし、「1001」の前に「200」をソートすることを望んでいる場合、これが固執する場所は、数字/文字の組み合わせが発生する場所です。この問題は、「ファーストネーム」による順序のように、名前を付ける項目に任意の名前 (「ボックス 1」、「ボックス 1」、「ボックス 1」、「1 ボックス」、「1」など...) を付けることができるという事実によるものですが、多くの人が自分の子供に数字の名前を付けています。並べ替えは悪夢です。
私は、すべての「数値のみ」のフィールドのUNIONを実行し、数値にキャストしてソートし、次に英数字と結合するというアイデアをいじりました...したがって、少なくとも数値は「期待どおり」でした-しかしオーバーヘッドは法外なようです。
ユーザーの要求に従って、「2erd」は「100」の前にソートされ、「22Asd」は「22asd」の前にソートされると予想されます
提案や解決策はありますか?これは出てくるはずです。DB2 v9.5 を使用しています
「0000123」は「122」の前にソートされるため、先行ゼロも「問題」です。