sql server 中,money类型转换为字符串的有关问题

sql server 中,money类型转换为字符串的问题

DECLARE @UnitPrice money
SET @UnitPrice = 0.5028
SELECT @UnitPrice

PRINT @UnitPrice
PRINT CAST(@UnitPrice AS varchar(50))
PRINT CONVERT(varchar(50), @UnitPrice)


SELECT 出来的可以正确显示,后面3行PRINT出来的,就只显示为“0.50”了,小数点后面第3位开始都丢掉了
在转换为字符串的时候,如何保留小数点后面至少4位数值?

------解决思路----------------------
try this,

declare @UnitPrice money
set @UnitPrice=0.5028

print rtrim(cast(@UnitPrice as decimal(18,4)))

------解决思路----------------------

DECLARE @UnitPrice money
SET @UnitPrice = 0.5028
SELECT @UnitPrice
 
PRINT @UnitPrice
PRINT CAST(@UnitPrice AS dec(12,4))
PRINT CONVERT(varchar(50), CAST(@UnitPrice AS dec(12,4)))

------解决思路----------------------
刚看了SQL帮助。找到问题了。
使用 CONVERT:

CONVERT (data_type[(length)], expression [, style])

这里有个style参数。
在下表中,左列表示从 money 或 smallmoney 转换为字符数据时的 style 值。

值 输出 
0(默认值) 小数点左侧每三位数字之间不以逗号分隔,小数点右侧取两位数,例如 4235.98。 
1 小数点左侧每三位数字之间以逗号分隔,小数点右侧取两位数,例如 3,510.92。 
2 小数点左侧每三位数字之间不以逗号分隔,小数点右侧取四位数,例如 4235.9819。 

改为下面就可以了。
PRINT CONVERT(varchar(50), @UnitPrice,2)
------解决思路----------------------

--可以把 
DECLARE @UnitPrice money 
--换成
DECLARE @UnitPrice decimal(18,4)