我試圖左側連接兩個表在同一臺服務器上,但不同的數據庫使用標題爲'憑證'的字段。這些字段包含完全相同的數據,但存儲爲不同的數據類型。在表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