[英]How to convert nvarchar to decimal in SQL
如何在 SQL Server 中將 nvarchar 轉換為十進制?
我需要將“ '38,716.1311'
類的值轉換為 38716.1311。
我曾嘗試使用此方法但無法成功轉換:
DECLARE @TempValue NVARCHAR(100) = '38,716.1311'
SELECT
CONVERT(DECIMAL(18, 2), @TempValue)
誰能建議正確的查詢? 提前致謝
只需在轉換前從字符串中刪除逗號:
Select CONVERT(DECIMAL(18,2),replace('38,716.1311', ',', ''))
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 轉換
使用 REPLACE 刪除逗號,如下所示:
Declare @TempValue nvarchar = '38,716.1311'
Select CONVERT(DECIMAL(18,2), REPLACE(@TempValue, ',', ''))
如果@TempValue
是MONEY
則更好,因此它會忽略逗號分隔
Declare @TempValue MONEY = '38,716.1311'
Select CAST(@TempValue AS DECIMAL(18,2))
使用 MONEY 數據類型並轉換為十進制數據類型:
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,',',''))
以我為例,一些數據如下: version: '1.2.12'
我想在Sql中注冊類似版本:1.212
清理varchar (消除點或逗號)
轉換為字符(6 位)並用 0 填充空格。 (使用合並捕獲空值)
轉換為數字並除以 100000
轉換為十進制(10,4)
結果 ->> 版本 1.212
Select 'version'=cast(cast(replace(cast(replace(coalesce([##DATA##],'0'), '.', '') as char(6)),' ','0')as numeric(6))/100000 as decimal (10,4)
也許還有另一種更簡單的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.