在 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 计算模式中所有表中的记录