2017-03-02 58 views
1

我在varchar列上加入時出現問題。具有特殊字符和前導零的varchar中的SQL JOIN

我打算通過產品代碼更新Excel數據中的SQL數據,但Twr_Kodvarchar,它是使用Excel數據連接的唯一方法。

當前導零爲零時,轉換爲varchar也存在問題。

select CDN.Towary.Twr_Kod, excel.Twr_Kod 
from CDN.Towary 
left join openrowset('Microsoft.ACE.OLEDB.12.0', 
        Excel 8.0;Database=C:\excel\towary.xlsx;', 
        'select * from [Arkusz1$]') excel 
        on cast(CDN.Towary.Twr_Kod as varchar) = cast(excel.Twr_Kod as varchar) 

enter image description here

我知道這是不是一個很好的解決方案,以參加在VARCHAR列,但它是必要的,請大家幫忙,爲什麼不轉換。

+0

'mysql'或'sql-server'請正確標記您的問題。 – Tanner

+0

對不起,改變了。只有sql-server – AdamWoxTron

+0

請給出一些具有前導零的示例值並突出顯示問題,但您沒有在示例數據中顯示 – Tanner

回答

0

問題是因爲你的excel列包含混合的數據類型。 使用混合數據類型列導入csv文件或excel文件時,它將用null替換非主導類型。 (使用OLEDB或Ace.Oledb)

解決方法

添加IMEX=1;您OPENROWSET的ConnectionString,並添加一個虛擬第一行containning文本值

按照我的答案在Import error using Openrowset欲瞭解詳細內容

+0

這是如此令人困惑,但工作。非常感謝。你救了我的命:D – AdamWoxTron