2017-03-01 92 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', ',', '')) 
相關問題