我试图左侧连接两个表在同一台服务器上,但不同的数据库使用标题为'凭证'的字段。这些字段包含完全相同的数据,但存储为不同的数据类型。在表a上,凭证以nvarchar存储,在表b上以字符形式存储。加入相同的字段,不同的数据类型
当我运行我的查询时,我从表b得到了很多凭证的空值。如果我分别对表运行查询,则可以看到表b中的值作为连接查询中的空值出现。
这里的任何帮助将是巨大的。
我试图左侧连接两个表在同一台服务器上,但不同的数据库使用标题为'凭证'的字段。这些字段包含完全相同的数据,但存储为不同的数据类型。在表a上,凭证以nvarchar存储,在表b上以字符形式存储。加入相同的字段,不同的数据类型
当我运行我的查询时,我从表b得到了很多凭证的空值。如果我分别对表运行查询,则可以看到表b中的值作为连接查询中的空值出现。
这里的任何帮助将是巨大的。
这两种数据类型应该在大多数数据库中隐式转换。它不会关心char增加的空间。
即使看起来相同,有时数据也不一样。请参阅下面的SQL Server的代码(我没有展示使用SQL Server对那些在结果集):
创建数据
create table #temp (id varchar (10))
create table #temp2 (id char(10))
truncate table #temp2
insert into #temp values ('test1')
insert into #temp values ('test' +Char(13))
Insert into #temp2 values ('test1')
insert into #temp2 values ('test')
查询#TEMP
select * from #temp
数据返回
id
test1
test
查询#临时2
select * from #temp2
数据返回
id
test1
test
连接查询
select t.id as tid , t2.id as t2id from #temp t
left join #temp2 t2 on t.id = t2.id
数据返回
tid t2id
test1 test1
test NULL
正如你所看到的,如果你运行它,那将无法打印的字符(在此大小写回车)使得这些值不再匹配连接。如果你的表中有这样的数据,那么值就不一样了。为了更具体地解决问题,我必须知道你使用的数据库后端。
你可以添加一些样本数据和所需的结果? – McNets
A.Acct#A.VOUCHER \t B.Acct#\t B.Voucher 123456789 UXXXXXXXX NULL NULL 123456789 UXXXXXXXX NULL NULL上面是我目前收到的。预计表b值将填入相同的数据。这里是我的连接:在tableb.voucher = tablea.voucher上左连接tableB。正如我前面提到的,相同的数据,但不同的数据类型。 – bwrow24
请您编辑*您的问题,请不要在评论部分添加其他详细信息:) – bc004346