在 DB2 sql for z/os 中用 0 填充 smallint

Posted

技术标签:

【中文标题】在 DB2 sql for z/os 中用 0 填充 smallint【英文标题】:pad smallint with 0s in DB2 sql for z/os 【发布时间】: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 【参考方案1】:

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

【讨论】:

DIGITS() 函数不会也不会在这里工作,因为如果参数是小整数,该函数会返回一个 5 长度的字符串。我的论点是小整数。我得到的结果是 00360 00288,我想要 0360 0288 @AshishSriAshish 所以只取最右边的 4 个字符的子字符串。

以上是关于在 DB2 sql for z/os 中用 0 填充 smallint的主要内容,如果未能解决你的问题,请参考以下文章

DB2 10 for Z/OS, SQL LIKE Column Value Plus Wildcard DB2 w/o loss stage 1

如何在 DB2 for Z/OS 中返回系统日期或日期时间?

我想使用 SQL for DB2 z/OS v9 计算模式中所有表中的记录

对 DB2 for z/OS 的存储过程调用中不支持字符串文字

在 DB2 for Z/OS 中创建表分区

DB2 for z/OS:CURSOR FOR UPDATE 锁定行为