2009-03-09 16 views
1

Firebird 2.0の表に英数字を含むことができるVARCHARフィールドがあります。私は数字として数字のみが含まれているすべての値をソートするには、このフィールドにデータをソートする必要がある、とソート他のすべての値は0Firebirdは、文字列がすべて数字であるかどうかを判断します。

として例えば、私は、4つの値、

"1", "2", "10", "string", 

を持っている場合は、私がする必要があります

"1", "10", "2", "string". 

私が考えていたとして文字列の並べ替えとソートそれ

"string", "1", "2", "10". 

としてデフォルトのソート値をINTEGERにキャストしますが、文字列に変換エラーが発生していますが、これは当然正しいことです。これを回避するには?

答えて

1

あなたは組み込み関数LPADを使用することができます。

SELECT 
    ... 
    <number_field>, 
    ... 
FROM 
    ... 
ORDER BY 
    LPAD(<numer_field>, 10) 
0

アプリケーションを使用してソート可能な値を格納する余分な列を作成します。次に、その列に基づいてソートを行います。 数字を最後にしたい場合は、数字の前に "ZZZ"(または "ÜÜÜ"またはあなたの言語の最後の文字)を挿入します。書式( "ZZZ%012d"、my_num)と同様です。

関連する問題