質問

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);

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top