【问题标题】:pad smallint with 0s in DB2 sql for z/os在 DB2 sql for z/os 中用 0 填充 smallint
【发布时间】:2015-03-13 01:35:23
【问题描述】:

有没有办法在 DB2 for mainframe z/OS 中将 0 填充到 smallint。我没有编写任何程序,而是直接在 DB2 QMF 上运行查询。

字段定义:

Column Name  Col type length
some_column  Smallint  2

 some_column     result
 -----------     ------
  288         ==>  0288
  88          ==>  0088
  1224        ==>  1224

【问题讨论】:

  • 这是大多数系统的一般想法:right('000'+cast(c as varchar(10)), 4)
  • @shawnt00,这真的适用于任意数字吗? (有时 1 位,有时 2 位等...)
  • 我收到以下错误:我直接在 DB2 上运行此查询,而不使用任何程序。我将 c 替换为列名 DSNT408I SQLCODE = -171, ERROR: THE DATA TYPE, LENGTH, OR VALUE OF ARGUMENT 1 OF + IS INVALID

标签: sql database db2 zos


【解决方案1】:

在所有当前支持的 DB2 for z/OS 版本中,有一个函数 DIGITS() 可以满足您的需求。

【讨论】:

  • DIGITS() 函数不会也不会在这里工作,因为如果参数是小整数,该函数会返回一个 5 长度的字符串。我的论点是小整数。我得到的结果是 00360 00288,我想要 0360 0288
  • @AshishSriAshish 所以只取最右边的 4 个字符的子字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多