SQL 将 NVARCHAR 转换为货币价值

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/4448270/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-01 08:34:29  来源:igfitidea点击:

Convert NVARCHAR to money value

sqlsql-serversql-server-2005sql-server-2008

提问by CyberK

I'm trying to convert an NVARCHAR value to a money value with MsSQL.

我正在尝试使用 MsSQL 将 NVARCHAR 值转换为货币值。

I know I can use something like:

我知道我可以使用类似的东西:

SELECT CONVERT(money, ValueColumn) FROM SomeTable

But the problem is when I have a value 4352,50, and I call the convert method, the value becomes 435250,00

但是问题是当我有一个值 4352,50,并且我调用 convert 方法时,该值变成了 435250,00

What am I missing? I also tried CONVERT(money, ValueColumn, 2) but without any success.

我错过了什么?我也试过 CONVERT(money, ValueColumn, 2) 但没有任何成功。

Thanks in advance!

提前致谢!

采纳答案by Marek Grzenkowicz

SELECT CONVERT(money, REPLACE('4352,50', ',', '.'))

SELECT CONVERT(money, REPLACE('4352,50', ',', '.'))

回答by bernd_k

As you are working in ,- as-decimal-separator use this:

当您在 ,- as-decimal-separator 中工作时,请使用以下命令:

SELECT CONVERT(money, REPLACE(ValueColumn, ',', '.'))

回答by Adriaan Stander

Try

尝试

DECLARE @ValueColumn NVARCHAR(20)

SELECT @ValueColumn = '4352.50'

SELECT CONVERT(money, @ValueColumn) 

VS

VS

DECLARE @ValueColumn NVARCHAR(20)

SELECT @ValueColumn = '4352,50'

SELECT CONVERT(money, @ValueColumn) 

The comma is not being intepreted as the decimal point.

逗号没有被解释为小数点。

回答by codingbadger

This is a bit of a hack but if the rest of your data is the same format

这有点黑客,但如果您的其余数据格式相同

e.g numbers , numbers ,

例如 numbers , numbers ,

Declare @Value nvarchar(50)

Set @Value = '4352,50,'

Select Convert(Money, Substring(@Value, 0, Charindex(',',@value)) + '.' + Substring(@Value, Charindex(',',@Value)+1, 2))

回答by Abacaxi Maluco

SELECT TRY_PARSE('12.345,67' AS Money USING 'pt-BR')

SELECT TRY_PARSE('12.345,67' AS Money USING 'pt-BR')