![](/img/trans.png)
[英]Arithmetic overflow error converting varchar to data type numeric -error
[英]Arithmetic overflow error converting varchar to data type numeric
嗨,我在下面有一個查詢,它為我創建了插入腳本。 TotalPremiumValue 列的datatype Decimal(5,2)
。 當我執行查詢時,出現以下錯誤:將 varchar 轉換為數字數據類型的算術溢出錯誤。 有誰能夠幫我?
SELECT 'IF NOT EXISTS(SELECT 1 FROM Lkup.TotalPremium WHERE [TotalPremiumValue]= '''+[TotalPremiumValue]+''')
INSERT INTO Lkup.TotalPremium ' +
'(' +
'[TotalPremiumValue],' +
'[EffectiveDate]' +
')' +
'VALUES (' +
CASE WHEN [TotalPremiumValue] IS NULL THEN 'NULL' ELSE CONVERT(VARCHAR(40), [TotalPremiumValue]) END + ', ' +
CASE WHEN [EffectiveDate] IS NULL THEN 'NULL' ELSE 'CONVERT(DATETIME, ' + master.sys.fn_varbintohexstr (CONVERT(BINARY(8), [EffectiveDate])) + ')' END + ', ' +
')'
FROM Lkup.TotalPremium
謝謝
請嘗試以下查詢
SELECT
'IF EXISTS(SELECT 1 FROM Lkup WHERE [TotalPremiumValue] = ' + CONVERT(varchar(50), [TotalPremiumValue]) + ')
INSERT INTO Lkup ' +
'(' +
'[TotalPremiumValue]' +
')' +
'VALUES (' +
case when CONVERT(varchar(50),[TotalPremiumValue]) IS NULL then 'null' else CONVERT(varchar(50),TotalPremiumValue) end +
')'
FROM Lkup
也許嘗試將結果重鑄為小數(5,2)? 我將調用添加到您的代碼的一部分並粘貼了下面的部分。 您還可以將 varchar(40) 縮小為 varchar(6),它將保存所有 5 個數字加上小數點。
'VALUES ( CAST(' +
CASE WHEN [TotalPremiumValue] IS NULL THEN 'NULL' ELSE CONVERT(VARCHAR(40), [TotalPremiumValue]) END + ' AS DECIMAL(5,2)), ' +
CASE WHEN [EffectiveDate] IS NULL THEN 'NULL' ELSE 'CONVERT(DATETIME, ' + master.sys.fn_varbintohexstr (CONVERT(BINARY(8), [EffectiveDate])) + ')' END + ', ' +
')'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.