Sql server Varchar和int列在sql中连接
我试过这个问题Sql server Varchar和int列在sql中连接,sql-server,nvarchar,truncated,Sql Server,Nvarchar,Truncated,我试过这个问题 insert into Dimension_DDTU (BI_Id, BI_Name, DBI_Id, dBI_Name) select ds.BI_ID, dvo.name, ds.BI_Id + '' + dm.DBI_Id as DBI_Id, dso.dname from Census.dbo.SMaster sm full outer join C
insert into Dimension_DDTU (BI_Id, BI_Name, DBI_Id, dBI_Name)
select
ds.BI_ID,
dvo.name,
ds.BI_Id + '' + dm.DBI_Id as DBI_Id,
dso.dname
from
Census.dbo.SMaster sm
full outer join
C.dbo.dis dso on dso.did = sm.did
full outer join
C.dbo.Div dvo on dvo.dsid = dso.diid
full outer join
b.dbo.DMap ds on ds.DOp_Id = dso.did
full outer join
b.dbo.DsMap dm on dm.DOp_Id = sm.did
这里的BI\u Id,DBI\u Id
数据类型是nvarchar(50),因为我存储的是这样的值(001002…)
和其他处于联接中的列都是int数据类型,除了
BI_Id and DBI_Id
这显示了一个错误
字符串或二进制数据将被截断
错误表示您在插入时遇到问题 此处:
Dimension\u DDTU(BI\u Id,BI\u Name,DBI\u Id,DBI\u Name)
列大小之一不足以存储插入的值
我的水晶球说它是Dimension\u DDTU.DBI\u Id
,它具有相同的varchar(50)
大小,但必须是varchar(100)
至少要接受ds.BI\u Id+''+dm.DBI\u Id
(varchar(50)
+varchar(50)
)
如果这些ID之间有一个分隔符,那么您也应该根据分隔符的大小来增加大小。源列的数据类型是什么?它们也是varchar类型吗?请检查更新。。连接中的列是int数据类型execpt BI_Id和DBI_Id,它们是varchar(50),因为我在这些列中存储数据,如001002 etcbut BI_Id和DBI_Id在源和目标上。所以这有点让人困惑。你能分享维度的完整结构吗_DDTU@seesharp
DBI\u Id
的长度是多少?现场检查并确认在其长度内传递数据的长度是多少?