在 informix SQL 上向数字字符串添加前导零

Add leading zeros to number string on informix SQL

我正在尝试寻找一种更简洁的方法来为 Informix SQL 查询中的数字字符串添加前导零。

我选择的字段是一个整数,其值范围为 4 到 14 位。我需要将此字段转换为始终包含 14 个字符并用前导零填充剩余位置的字符串,因此 1234 变为 00000000001234,1234567 变为 00000001234567,1234567890000 变为 01234567890000。我目前正在使用 CASE 函数,如下所示:

select case
    when length(to_char(num_field)) = 4 then CONCAT("0000000000",to_char(num_field))
    when length(to_char(num_field)) = 5 then CONCAT("000000000",to_char(num_field))
    when length(to_char(num_field)) = 6 then CONCAT("00000000",to_char(num_field))
    when length(to_char(num_field)) = 7 then CONCAT("0000000",to_char(num_field))
    when length(to_char(num_field)) = 8 then CONCAT("000000",to_char(num_field))
    when length(to_char(num_field)) = 9 then CONCAT("00000",to_char(num_field))
    when length(to_char(num_field)) = 10 then CONCAT("0000",to_char(num_field))
    when length(to_char(num_field)) = 11 then CONCAT("000",to_char(num_field))
    when length(to_char(num_field)) = 12 then CONCAT("00",to_char(num_field))
    when length(to_char(num_field)) = 13 then CONCAT("0",to_char(num_field))
else to_char(num_field) end num_field_with_zeros

Informix SQL 中是否有函数可以更有效地执行此转换?

我认为您正在寻找具有数字格式字符串的 TO_CHAR()

SELECT TO_CHAR(num_field, "&&&&&&&&&&&&&&") AS num_field_with_zeros
  FROM the_table;

当我检查这个时,我使用了:

SELECT TO_CHAR(tabid, '&&&&&&&&&')
  FROM "informix".systables
 WHERE tabid > 100;

并得到输出(在一个特定的数据库中):

000000141
000000142
000000148
000000156
000000157
000000158
000000159
000000160
000000209
000000210
000000211
000000212
000000213
000000214
000000215
000000216
000000222

我只是选择将输出限制为 9 个字符而不是 14 个。