修改
我做了一切。但现在我收到了这个错误:
Msg 8152,Level 16,State 14,Line 1 字符串或二进制数据将被截断。 该语句已终止。
我知道我需要更改一个值,但不知道哪一个。这是表格:
USE MasterAddress
Create Table CompanyAddress1
(
ID int IDENTITY(1,1) PRIMARY KEY
,CompanyName varchar (MAX)
,CompanyNumber varchar (MAX)
,RegAddress_CareOf varchar(MAX)
,RegAddress_POBox varchar (MAX)
,RegAddress_AddressLine1 varchar (MAX)
,RegAddress_AddressLine2 varchar(MAX)
,RegAddress_PostTown varchar (MAX)
,RegAddress_County varchar(MAX)
,RegAddress_Country varchar(MAX)
,RegAddress_PostCode varchar (15)
,CompanyCategory varchar (MAX)
,CompanyStatus varchar (MAX)
,CountryOfOrigin varchar
,DissolutionDate date
,IncorporationDate date
,Accounts_AccountRefDay tinyint
,Accounts_AccountRefMonth tinyint
,Accounts_AccountsNextDueDate date
,Accounts_AccountsLastMadeUpDate date
,Accounts_AccountCategory varchar (MAX)
,[Returns_NextDueDate] date
,[Returns_LastMadeUpDate] date
,Mortgages_NumMortCharges int
,Mortgages_NumMortOutstanding int
,Mortgages_NumMortPartSatisfied int
,Mortgages_NumMortSatisfied int
,SICCode_SicText_1 varchar (MAX)
,SICCode_SicText_2 varchar (MAX)
,SICCode_SicText_3 varchar (MAX)
,SICCode_SicText_4 varchar (MAX)
,LimitedPartnerships_NumGenPartners varchar(MAX)
,LimitedPartnerships_NumLimPartners varchar(MAX)
,URI varchar (MAX)
,PreviousName_1CONDATE varchar (MAX)
,PreviousName_1CompanyName varchar (MAX)
,PreviousName_2CONDATE varchar (MAX)
,PreviousName_2CompanyName varchar (MAX)
,PreviousName_3CONDATE varchar (MAX)
,PreviousName_3CompanyName varchar (MAX)
);
这是插入内容:
INSERT INTO CompanyAddress1
VALUES (
'BARDOG NEW OPCO LIMITED OPCO LIMITED'
,'5843995'
,NULL
,NULL
,'SUITE 555 SECOND FLOOR'
,'DESIGN CENTRE EAST MILL'
,'YORK'
,NULL
,NULL
,'P05T K0DE'
,'Private Limited Company'
,'Active'
,'United Kingdom'
,NULL
,'2006-06-2006'
,31
,12
,'2015-09-30'
,'2013-12-31'
,'FULL'
,'2015-07-19'
,'2014-07-14'
,0
,0
,0
,0
,'74990 - Non-trading company'
,'86900 - Other human health activities'
,NULL
,NULL
,0
,0
,'http://biszness.data.gov/id/company/05843995'
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
);
答案 0 :(得分:1)
我认为您在此处遇到错误'2006-06-25',31,12,'2015-09-30'
如果我们看看你的创作
,DissolutionDate date
,IncorporationDate date
,Accounts_AccountRefDay tinyint
,Accounts_AccountsNextDueDate date
,Accounts_AccountsLastMadeUpDate date
只有1个小的int然后是日期。在您的插入中,其顺序与创建顺序相同,有31,12
,然后是另一个日期
因此,您尝试在Accounts_AccountsNextDueDate
让我知道它是否有效,我可以查看是否还有其他错误
编辑:您输入值的顺序仍然是错误的
VALUES
('BARDOG NEW OPCO LIMITED','5555555',NULL,NULL,'SUITE 555 SECOND FLOOR',
'DESIGN CENTRE EAST MILL','YORK',NULL,NULL,'PO5T K0DE',
'Private Limited Company','Active','United Kingdom',NULL, '2006-06-25',31,'2015-09-30','2015-09-30',
'FULL','2015-05-30','2014-06-25',0,0,0,0,'74990-Non-trading company', '86900 - Other human health activities',NULL, NULL,
0,0, 'http://business/company/11111111',NULL,NULL,NULL, 12
);
您的第一个日期条目发生在第15个元素。
(CompanyName
,CompanyNumber
,RegAddress_CareOf
,RegAddress_POBox
,RegAddress_AddressLine1
,RegAddress_AddressLine2
,RegAddress_PostTown
,RegAddress_County
,RegAddress_PostCode
,CompanyCategory
,CompanyStatus
,CountryOfOrigin
,DissolutionDate
,IncorporationDate
,Accounts_AccountRefDay
在您的插入顺序中,您的第一个日期位于第13个元素。 您正在插入日期 ,Accounts_AccountRefDay
(第15个元素是tinyint)
我建议重写整个VALUES部分
答案 1 :(得分:1)
请参阅MSDN article about char[(n)]
and varchar[(n)]
data types。如果未指定n
,则假定n
为1.因此,您对CountryOfOrigin varchar
的定义会将该列限制为1个字符。
您可以在INFORMATION_SCHEMA.Columns
:
select * from information_schema.columns
where table_name = 'CompanyAddress1'
and column_name = 'CountryOfOrigin'
结果显示CHARACTER_MAXIMUM_LENGTH
为1.您的INSERT语句将'United Kingdom'
放入其中。这是导致错误String or binary data would be truncated.
如果你解决了这个问题,你的INSERT
语句将会产生以下错误:
消息241,级别16,状态1,行1转换时转换失败 字符串的日期和/或时间。
这是因为字符'2006-06-2006'
已插入date
列IncorporationDate
。修复此问题将导致查询成功。
答案 2 :(得分:0)
为了不在SQL Server中为表执行DML命令时遇到问题,它有一个快捷方式,您需要做的就是更改所需的值 右键单击数据库上的表,然后单击脚本表格,然后选择所需的操作(插入到,更新到,删除到等)