Sql server 2008 无法执行插入操作

Sql server 2008 无法执行插入操作,sql-server-2008,Sql Server 2008,我的新桌子坏了 create table #Det_rec( C_ID varchar(16), Allot_Quan decimal(12,3), LocIn_Allot_Quan decimal(12,3), LRC smallint default 00, LocIn_R varchar(50) DEFAULT ' ', LocIn_Date datetime default ' ', Filler numeric(8) default ' ', RTA_Ref_No v

我的新桌子坏了

create table #Det_rec(
C_ID varchar(16),
Allot_Quan decimal(12,3),
LocIn_Allot_Quan decimal(12,3),
LRC smallint default 00,
LocIn_R varchar(50) DEFAULT '      ',
LocIn_Date datetime default '   ',
Filler numeric(8) default '   ',
RTA_Ref_No varchar(8) default'CDSL----',
isin_opt varchar(10))
执行插入操作时

INSERT INTO #Det_rec (C_ID,Allot_Quan,isin_opt)
select 
t.credit_dpclid,
cast(t.qty as decimal(12,3)),
t.isin_opt 
from fin_mst f inner join #temps t on f.IHNO = t.IHNO 
我犯了一个错误,比如

Msg 8114,第16级,第5状态,第1行 将数据类型varchar转换为数字时出错


我已经应用了convert cast函数,但仍然出现了此错误。

请尝试使用此代码,因为任何数量值都可能是字符串

CREATE TABLE #Det_rec
  (
     C_ID             VARCHAR(16),
     Allot_Quan       DECIMAL(12, 3),
     LocIn_Allot_Quan DECIMAL(12, 3),
     LRC              SMALLINT DEFAULT 00,
     LocIn_R          VARCHAR(50) DEFAULT '      ',
     LocIn_Date       DATETIME DEFAULT '   ',
     Filler           NUMERIC(8) DEFAULT '   ',
     RTA_Ref_No       VARCHAR(8) DEFAULT'CDSL----',
     isin_opt         VARCHAR(10)
  )

INSERT INTO #Det_rec
            (C_ID,
             Allot_Quan,
             isin_opt)
SELECT t.credit_dpclid,
       cast(t.qty AS DECIMAL(12, 3)),
       t.isin_opt
FROM   fin_mst f
       INNER JOIN #temps t
               ON f.IHNO = t.IHNO
WHERE  isnumeric(t.qty) = 1 

您可以在此处添加#temps table qty列数据还是在此处填写#temp table@SoundXY您有一些奇怪的默认值选择-查看
Filler
,然后运行
select CAST(''作为数字(8))
您是否只运行select语句并实际查看了要插入的值?否则,这是您不尝试插入的值之一(提示-查看默认值)
ISNUMERIC
不能保证值可以转换为十进制(12,3)。例如,
通过了
ISNUMERIC
测试,但仍然会导致错误。@Damien:你说得对,让sonudx检查一下这个代码,如果他仍然面临这个问题,请建议新的解决方案。