You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL INSERT INTO语句报错:varchar转bigint失败,求排查错误位置

问题分析与解决

你遇到的Msg 8114错误是典型的数据类型不匹配问题,根源出在SageCustomerID列的插入值上:

  • 你的表定义中,SageCustomerID被声明为BIGINT类型(整数类型),但在INSERT语句里,你给它传的是带引号的字符串值,比如'SageCustomerId1'、'SageCustomerId2',SQL Server无法把这类包含字母的字符串自动转换成合法的大整数,所以抛出了转换错误。

修正方案

有两种可行的修正方式,你可以根据实际业务需求选择:

方式1:使用合法的整数值插入

如果SageCustomerID确实应该存储整数标识,把插入值改成不带引号的数字即可:

INSERT INTO Customer (OrganizationName, Telephone, MobileTelephone, CustomerAdressLine1, CustomerAdressLine2, PostalCode, FederalTaxID, EmailAddress, SageCustomerId)
VALUES 
('OrganizationName1', 'Telephone1', 'MobileTelephone1', 'CustomerAdressLine1', 'CustomerAdressLine2', 'PostalCode1', 'FederalTaxID1', 'EmailAddress1', 1),
('OrganizationName2', 'Telephone2', 'MobileTelephone2', 'CustomerAdressLine2', 'CustomerAdressLine2', 'PostalCode2', 'FederalTaxID2', 'EmailAddress2', 2),
('OrganizationName3', 'Telephone3', 'MobileTelephone3', 'CustomerAdressLine3', 'CustomerAdressLine3', 'PostalCode3', 'FederalTaxID3', 'EmailAddress3', 3);

方式2:调整列的数据类型

如果SageCustomerID需要存储类似SageCustomerId1这样的字符串格式标识,那么应该把表定义中的SageCustomerID类型改成VARCHAR(比如VARCHAR(255)),同时保留唯一约束:

CREATE TABLE Customer (
    CustomerID BIGINT IDENTITY(1,1) PRIMARY KEY NOT NULL,
    OrganizationName VARCHAR(255) NOT NULL,
    Telephone VARCHAR(255),
    MobileTelephone VARCHAR(255) NOT NULL,
    CustomerAdressLine1 VARCHAR(255) NOT NULL,
    CustomerAdressLine2 VARCHAR(255),
    PostalCode VARCHAR(255) NOT NULL,
    FederalTaxID VARCHAR(255) UNIQUE NOT NULL,
    EmailAddress VARCHAR(255) UNIQUE NOT NULL,
    SageCustomerID VARCHAR(255) UNIQUE -- 修改为字符串类型
);

调整表结构后,再执行你原来的INSERT语句就不会报错了。

内容的提问来源于stack exchange,提问作者user9729956

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:26:21