2017-03-01 51 views
2

如何将SQL Server中的nvarchar转换为十进制?如何将nvarchar转换为SQL中的十进制

我需要将值'38,716.1311'转换为38716.1311。

我一直在使用这个方法尝试,但无法成功转换:

DECLARE @TempValue NVARCHAR(100) = '38,716.1311' 

SELECT 
    CONVERT(DECIMAL(18, 2), @TempValue) 

任何人都可以提出正确的查询?在此先感谢

+3

如何删除逗号 –

回答

3

只需从字符串转换之前删除逗号:

Select CONVERT(DECIMAL(18,2),replace('38,716.1311', ',', '')) 
1

它的更好,如果@TempValueMONEY所以它忽略逗号分隔

Declare @TempValue MONEY = '38,716.1311' 
Select CAST(@TempValue AS DECIMAL(18,2)) 
0
Declare @TempValue nvarchar(100) 
    SET @TempValue = Replace('38,716.1311',',','') 
Select cast(@TempValue AS DECIMAL(18,2)) 

- 我们不能转换值像“38,716.1311”(NVARCHAR)先到DECIMAL,我们用空白“38716.1311”替换“,”然后用DECIMAL

+0

尽管此代码片段是受欢迎的,并且可能会提供一些帮助,但它会[如果包含* how *和* why *解释](// meta.stackexchange.com/q/114762)解决问题。请记住,你正在为将来的读者回答这个问题,而不仅仅是现在问的人!请编辑您的答案以添加解释,并指出适用的限制和假设。 –

0

用钱的数据类型,并转换成十进制数据类型:

DECLARE @Col MONEY = '38,716.1311' 
SELECT CONVERT(DECIMAL(20,4),@Col) 

或更换逗号,并转换成十进制

DECLARE @Col VARCHAR(100) = '38,716.1311' 
SELECT CONVERT(DECIMAL(20,4),REPLACE(@Col,',','')) 
0

通过删除逗号REPLACE像这样:

Declare @TempValue nvarchar = '38,716.1311' 
Select CONVERT(DECIMAL(18,2),REPLACE('38,716.1311', ',', '')) 
相关问题