我有一个浮动字段,显示数据:
1
1.00
3.12
3.00
我还有一个varchar字段,显示如下:
NA
ND
I
数据是这样的:Fld_N是浮点数,Fld_S是varchar
Fld_N Fld_S
----- ------
1
ND
1.00
3.12
3
NA
I
请注意,一行可以包含Fld_N或Fld_S的值,但不能同时包含两者。
我正在做的是使用coalesce:
COALESCE(STR(Fld_N,9,2), Fld_S) Fld
这不太好用,因为我的小数点总是高达2个小数点,而我需要它支持显示1和1.00。有没有办法不指定小数点,仍然适合在我的例子中显示1和1.00?
答案 0 :(得分:1)
尝试转换功能:
coalesce(convert(varchar,Fld_N),Fld_S)Fdl
答案 1 :(得分:0)
在浮点类型列中,1
和1.00
之间绝对没有区别。因此,你的建议实际上是不可能的。存储在数据库中的第1行和第3行的数据实际上是相同的。
但是,您可以转换为VARCHAR而不是使用STR,它将使用所需的最小小数位数:
COALESCE(CAST(fld_N AS VARCHAR(12)), Fld_S) AS Fld
这应该产生:
Fld ----- 1 ND 1 3.12 3 NA I
答案 2 :(得分:0)
而不是STR
,请使用
CAST(fld_N AS VARCHAR(9))
VARCHAR
只会根据需要使用尽可能多的小数位数来显示您提供的值。
将它放入COALESCE
会产生:
COALESCE(CAST(fld_N AS VARCHAR(9)), Fld_S) AS Fld