我得到了一个脚本,它将把一个表的内容(从沙箱)复制到另一个表(暂存),但我一直收到“将数据类型varchar转换为float时出错”的消息。
下面是代码:
INSERT INTO First_DB.Orig_Table
(CustomerNo, AccountGroupID, ComCode)
SELECT A.CustomerNo, A.AccountGroupID, A.ComCode
FROM Test_DB.DBO.viewCMMasterData A
WHERE NOT EXISTS(SELECT B.CustomerNo
FROM First_DB.Orig_Table B
WHERE B.CustomerNo = A.CustomerNo)
***Test_DB.DBO.viewCMMasterData***位于“视图”文件夹下,并与名为***dbo.cmMasterData***的表绑定,该表也位于***Test_DB***数据库中。
至于数据类型,
第一个数据库原始表
CustomerNo (PK, varchar(10), not null)
AccountGroupID (int, null)
ComCode (varchar(4), null)
测试数据库.数据库对象.查看CM主数据
CustomerNo (nvarchar(255), null)
AccountGroupID (smallint, not null)
ComCode (varchar(4), not null)
我尝试使用***CAST()***,但没有效果。
如果我还需要提供更多详细信息,请告诉我。
2条答案
按热度按时间zynd9foi1#
两个表的CustomerNo的数据类型不同,我认为viewCMMasterData表中有浮点值,未转换为varchar格式,即使您强制转换,也会出现相同的错误。
找出非文本值,即数值。转换或转换的原因只适用于当您的数据是适当的。
请使用强制类型转换为,并给予宽度。2问题也是由于宽度。3数据可能被截断。
我作为本地人测试,这对我很有效。
k4ymrczo2#
令人惊讶的是,我对脚本做了一些小的调整。我没有使用 A.CustomerNo,而是使用实际值进行比较。下面是我的代码:
我知道这不是解决此问题的有效方法,尤其是在将多个记录从一个表传输到另一个表时。我希望您能给予我更多建议以改进此解决方案。感谢所有回复的人!