1

我在 Firebird 2.0 表中有一个可以包含字母数字字符的 VARCHAR 字段。我需要对该字段的数据进行排序,将所有仅包含数字的值排序为数字,并将所有其他值排序为​​ 0。

例如,如果我有四个值,

"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”(或“ÜÜÜ”或您的语言中的最后一个字符)。像 Format("ZZZ%012d", my_num);

于 2009-03-09T08:19:54.427 回答