1

Firebird2.0テーブルに英数字を含むことができるVARCHARフィールドがあります。このフィールドのデータを並べ替え、数値のみを含むすべての値を数値として並べ替え、他のすべての値を0として並べ替える必要があります。

たとえば、4つの値がある場合、

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

私はそれを次のように並べ替える必要があります

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

文字列を次のように並べ替えるデフォルトの並べ替え

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

値をINTEGERにキャストすることを考えていましたが、文字列で変換エラーが発生します。これはもちろん正しいことです。これを回避する方法は?

4

2 に答える 2

2

組み込み関数LPADを使用できます。

SELECT
  ...
  <number_field>,
  ...
FROM
  ...
ORDER BY
  LPAD(<numer_field>, 10)
于 2009-03-09T10:59:22.280 に答える
0

アプリケーションを使用して並べ替え可能な値を格納する追加の列を作成します。次に、その列に基づいて並べ替えを行います。数字を最後にしたい場合は、数字の前に「ZZZ」(または「ÜÜÜ」など、言語の最後の文字)を挿入します。Like Format("ZZZ%012d", my_num);

于 2009-03-09T08:19:54.427 に答える