2012-10-17 89 views
1

聚結我有一個浮子字段示出的數據作爲例如:TSQL與浮子和varchar

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。有沒有辦法不指定小數點,仍然accomomdate在我的例子中顯示1和1.00?

回答

1

嘗試轉換功能:

COALESCE(轉換(VARCHAR,Fld_N),Fld_S)FDL

0

在浮動式欄中,11.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 
0

代替STR,使用

CAST(fld_N AS VARCHAR(9)) 

VARCHAR只會根據需要使用盡可能多的小數位來顯示您提供的值。

把那到你COALESCE將產生:

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