问题描述
|
嗨,我有一个查询,下面为我创建插入脚本。列TotalPremiumValue的值为“ 0”。当我执行查询时,出现以下错误:将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
谢谢
解决方法
也许尝试将结果重铸为十进制(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 + \',\' +
\')\'
,请尝试以下查询
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