Firebird确定字符串是否都是数字

时间:2009-03-09 07:27:09

标签: string sorting numbers firebird casting

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

例如,如果我有四个值,

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

我需要将其排序为

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

字符串排序为

的默认排序
"1", "10", "2", "string".

我正在考虑将值转换为INTEGER,但我在字符串上遇到转换错误,这当然是正确的。如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

您可以使用内置函数LPAD:

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

答案 1 :(得分:0)

创建额外的列,使用您的应用程序存储可排序的值。然后根据该列进行排序。 如果您希望您的数字在最后,请在数字前插入“ZZZ”(或“ÜÜÜ”或您语言中的最后一个字符)。像格式(“ZZZ%012d”,my_num);