Teradata中FORMAT格式Z(19)9的含义及实际输出效果是什么?
Teradata
FORMAT Z(19)9用法说明 基础含义
Z(n)是Teradata格式串的简写语法,代表连续重复n个Z字符,因此Z(19)9等价于19个连续消零占位符Z + 1个固定显示占位符9,整个格式默认对应整数类型的格式化,无内置小数点位。
具体格式化规则
- 前19位Z:符合消零逻辑,只有当前位为0且前面所有位都是0时,显示为空格;遇到第一个非0数字后,后续的Z位正常显示对应数字
- 最后1位9:不消零,不管对应位是否为0,都强制显示数字
- 因为格式串包含9字符,不符合"数值为0时整体输出空白"的触发条件(触发条件要求格式串仅含Z、逗号、点、G、D,无其他格式字符),所以数值为0时不会输出全空白
常见场景示例
整数输入场景
- 输入数值
5:输出为「19个空格 + 字符5」 - 输入数值
1234:输出为「16个空格 + 字符1234」 - 输入数值
0:输出为「19个空格 + 字符0」 - 输入数值
98765432101234567890(20位非0整数):无空格,直接输出完整20位数字 - 输入数值长度超过20位:格式长度不足,输出
********************(20个星号)
小数输入场景
你举例的输入0000.234为小数,当前Z(19)9格式无小数占位规则,Teradata会先对数值做取整处理,0000.234取整后为0,输出结果为「19个空格 + 字符0」,不会得到你猜测的.234000000。
如果你的实际需求是格式化小数,大概率是格式书写时遗漏了小数点/小数位标识,比如如果是Z(19)D9(9)(19位消零整数位 + 小数点 + 9位固定显示小数位),那输入0000.234时,整数位全为0会显示为空格,最终输出结果为「19个空格 + .234000000」,和你的猜测一致。
内容的提问来源于stack exchange,提问作者tonyibm
相关产品推荐
相关产品推荐

