1

データをそのまま表示する float フィールドがあります。

1
1.00
3.12
3.00

次のように表示される varchar フィールドもあります。

NA
ND 
I

データはそのままです: Fld_N は float で、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

変換機能を試してください:

合体 (convert(varchar,Fld_N),Fld_S) Fdl

于 2012-10-17T18:09:22.317 に答える
0

float 型のカラムでは、 と の間にまったく違いは1ありません1.00。したがって、あなたが提案することは実際には不可能です。データベースに格納されている行 1 と行 3 のデータは、実際には同一です。


ただし、STR を使用する代わりに VARCHAR にキャストできます。これにより、必要な小数点以下の桁数が最小限になります。

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

これにより、次が生成されます。

フィールド
-----
1
ND
1    
3.12
3
NA
私
于 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 に答える