2017-03-02 107 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