1

我有一个浮点字段,它显示如下数据:

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(STR(Fld_N,9,2), Fld_S)  Fld

这不太好用,因为我的小数点总是最多 2 个小数点,而我需要它来支持显示 1 和 1.00。有没有办法在我的示例中不指定小数点并且仍然可以显示 1 和 1.00?

4

3 回答 3

1

尝试转换功能:

合并(转换(varchar,Fld_N),Fld_S)Fdl

于 2012-10-17T18:09:22.317 回答
0

1在浮点型列中,和之间绝对没有区别1.00。因此,您的建议实际上是不可能的。实际上,存储在数据库中的第 1 行和第 3 行的数据是相同的。


但是,您可以强制转换为 VARCHAR 而不是使用 STR,这将使用最少的小数位数:

COALESCE(CAST(fld_N AS VARCHAR(12)), Fld_S) AS Fld

这应该产生:

弗尔德
-----
1
ND
1    
3.12
3
不适用
一世
于 2012-10-17T18:07:33.740 回答
0

而不是STR,使用

CAST(fld_N AS VARCHAR(9))

VARCHAR仅使用尽可能多的小数位来显示您提供的值。

将其放入您的遗嘱中COALESCE会产生:

COALESCE(CAST(fld_N AS VARCHAR(9)), Fld_S) AS Fld
于 2012-10-17T18:08:10.827 回答