这里简单易事就是说明一切的例子
select cast('0.0000' as numeric(26,4)) -- returns 0.0000 as should
select cast(cast('0.0000' as numeric(26,4)) as varchar (32)) -- returns .0000
但是
select cast(cast('1.0001' as numeric(26,4)) as varchar (32)) -- returns 1.0001
如何在没有case
语句的情况下保存0或者它是唯一的方法?为什么会这样?
答案 0 :(得分:2)
CAST到VARCHAR基于列的FORMAT(类似COBOL):
select cast('0.0000' as numeric(26,4));
'--(22).9(4)'
- >在第一个实际需要的数字(最多可选22位数)和4个小数位之前的浮动减号,但您需要至少一位数加上4位小数。
在列级别或此特定查询中更改:
select cast(cast('0.0000' as numeric(26,4) FORMAT '-(22)9.9(4)') as varchar (32));
0.0000
9
表示数字,例如9(10)
将是带有前导零的10位数字。
请参阅Teradata手册中的Datatypes and Formats。
顺便说一句,如果您了解Oracle语法并且您正在运行TD14 +,那么您也可以使用包含大多数Oracle格式选项的TO_CHAR。