gpt4 book ai didi

sql - 将数字转换为 varchar 0 数字后消失

转载 作者:行者123 更新时间:2023-12-01 14:31:14 25 4
gpt4 key购买 nike

太简单了这里是说明一切的例子

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 或者这是唯一的方法?为什么会这样?

最佳答案

转换为 VARCHAR 是基于列的格式(类似 COBOL):

select cast('0.0000' as numeric(26,4));

'--(22).9(4)'

-> 第一个实际需要的数字(最多可选 22 位)和 4 个小数位之前的 float 减号,但您至少需要一个数字加 4 个小数位。

在列级别或针对此特定查询进行更改:

select cast(cast('0.0000' as numeric(26,4) FORMAT '-(22)9.9(4)') as  varchar (32));

0.0000

9 表示一个数字,例如9(10) 将是前导零的 10 位数字。

参见 Datatypes and Formats在 Teradata 手册中。

顺便说一句,如果您了解 Oracle 语法并且您正在运行 TD14+,您还可以使用 TO_CHAR,包括大多数 Oracle 的格式选项。

关于sql - 将数字转换为 varchar 0 数字后消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30326575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com