-2

我创建了一个表

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[DimRegion2013]') AND type in (N'U'))
DROP TABLE [DimRegion2013]
Go
Create Table DimRegion2013

(RegionKey int NOT NULL identity Primary Key,                              
RegionView  char(1),
RegionViewCode  char(1),
SublocationString   nvarchar(7),
SubLocationCode char(10),
LocationCode    char(10),
RegionCode  char(10),
RegionGrpCode   char(10),
DivisionCode    char(10),
DivisionGrpCode char(10),
SubLocationDescription  char(50),
LocationDescription char(50),
RegionDescription   char(50),
RegionGrpDescription    char(50),
DivisionDescription char(50),
DivisionGrpDescription  char(50))

然后我尝试将数据插入到 DimRegion2013 表中。

Select
'Region1' as RegionView,
'R1' as RegionViewCode,
sl.sublocationstring, 
sl.subLocationCode, 
l.locationcode,
r.regioncode,
rg.RegionGrpCode,
d.DivisionCode,
dg.DivisionGrpCode,
sl.SubLocationDescription, 
l.LocationDescription,
r.regiondescription,
rg.RegionGrpDescription,
d.divisionDescription,
dg.DivisionGrpDescription
from SMECSubLocation sl, 
SCLocation l, 
SCRegion r, 
SCRegionGrp rg,
SCDivision d,
SCDivisionGrp dg
where l.LocationCode = sl.LocationCode
and r.RegionCode = l.RegionCode
and r.RegionGrpCode = rg.RegionGrpCode
and d.divisioncode = rg.divisioncode
and d.divisiongrpcode = dg.divisiongrpcode

我得到这个错误

消息 8152、级别 16、状态 14、第 4 行
字符串或二进制数据将被截断。

我看不出有什么问题。请帮我解决这个问题。

谢谢!

4

1 回答 1

0

您的表格同时定义了

RegionView  char(1),
RegionViewCode  char(1)

但你正试图插入

'Region1' as RegionView,
'R1' as RegionViewCode

这太多了,不适合这些领域。您需要使字段更大以保存该数据。如果数据的大小变化很大,我会varchar(??)在哪里使用??是您要存储的字符串的最大预期长度(例如varchar(20),如果 20 是最大值。)

当然,其他一些字段也可能被截断,但是如果不知道您正在使用的其他表的定义,就无法确定。

于 2013-10-18T12:42:25.397 回答