Firebirdは、文字列がすべて数字かどうかを判断します
質問
Firebird 2.0テーブルに、英数字を含むことができるVARCHARフィールドがあります。このフィールドでデータを並べ替え、数字として数字のみを含むすべての値を並べ替え、他のすべての値を0として並べ替える必要があります。
たとえば、4つの値がある場合、
"1", "2", "10", "string",
次のようにソートする必要があります
"string", "1", "2", "10".
文字列ソートをデフォルトのソート
"1", "10", "2", "string".
値をINTEGERにキャストすることを考えていましたが、文字列で変換エラーが発生しています。これはもちろん正しいことです。これを回避する方法は?
解決
組み込み関数LPADを使用できます:
SELECT
...
<number_field>,
...
FROM
...
ORDER BY
LPAD(<numer_field>, 10)
他のヒント
アプリケーションを使用してソート可能な値を保存する追加の列を作成します。次に、その列に基づいてソートを行います。 数字を最後に付けたい場合は、「ZZZ」を挿入します。 (または&quot;&#220;&#220;&#220;&quot;または言語の最後の文字)を数字の前に追加します。 Like Format(&quot; ZZZ%012d&quot ;, my_num);
所属していません StackOverflow