-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(??)where ??を使用します。保存する文字列の予想される最大長です ( varchar(20)20 が最大の場合など)。

もちろん、他のフィールドも切り捨てられている可能性はありますが、使用している他のテーブルの定義を知らなければ、確実なことは言えません。

于 2013-10-18T12:42:25.397 に答える