varchar转换为数值类型的数据类型的算术溢出错误

问题描述

| 嗨,我有一个查询,下面为我创建插入脚本。列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
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...