我试图用MsSQL将NVARCHAR值转换为货币值。将NVARCHAR转换为货币值
我知道我可以使用类似:
SELECT CONVERT(money, ValueColumn) FROM SomeTable
但问题是,当我有一个值4352,50,我调用转换方法,该值变为435250,00
什么我错过了吗?我也试过CONVERT(金钱,ValueColumn,2)但没有任何成功。
在此先感谢!
我试图用MsSQL将NVARCHAR值转换为货币值。将NVARCHAR转换为货币值
我知道我可以使用类似:
SELECT CONVERT(money, ValueColumn) FROM SomeTable
但问题是,当我有一个值4352,50,我调用转换方法,该值变为435250,00
什么我错过了吗?我也试过CONVERT(金钱,ValueColumn,2)但没有任何成功。
在此先感谢!
尝试
DECLARE @ValueColumn NVARCHAR(20)
SELECT @ValueColumn = '4352.50'
SELECT CONVERT(money, @ValueColumn)
VS
DECLARE @ValueColumn NVARCHAR(20)
SELECT @ValueColumn = '4352,50'
SELECT CONVERT(money, @ValueColumn)
逗号没有被intepreted作为小数点。
好的,但是如何在不对代码进行硬编码的情况下在查询中使用它?因为它是一个有160.000行的表格...... – CyberK 2010-12-15 09:14:54
您必须先在列上使用替换。像* REPLACE(@ValueColumn,',','。')* – 2010-12-15 09:16:56
这是一个黑客位,但如果你的数据的其余部分是相同的格式
如 numbers , numbers ,
Declare @Value nvarchar(50)
Set @Value = '4352,50,'
Select Convert(Money, Substring(@Value, 0, Charindex(',',@value)) + '.' + Substring(@Value, Charindex(',',@Value)+1, 2))
当你在工作中, - 原样小数点分隔符使用:
SELECT CONVERT(money, REPLACE(ValueColumn, ',', '.'))
SELECT TRY_PARSE('12.345,67'AS Money US'pt-BR')
请告诉你在哪个区域工作。对于我住在一个小数分隔的土地上。选择显示错误的所有数字,即NLS修改。对我来说,这完全没问题。我会期待的。作为小数点分隔符(我是程序员而不是商人),结果用小数点显示。为了防止这些NLS干扰,我使用select cast(CONVERT(money,'1.1')as varchar)来获取内部表示 – 2010-12-15 09:39:25