SQL JOIN在具有特殊字符和前导零的varchar上

我在joinvarchar列时遇到问题。

我将通过产品代码更新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) 

在这里输入图像说明

我知道这是不是一个好的解决schemejoin到varchar列,但它是必要的,所以请帮助为什么演员不转换。

问题是因为你的excel列包含混合的数据types。 当导入csv文件或excel文件与混合的数据types列时,它将用nullreplace非主导types。 (使用Oledb或Ace.Oledb)

解决方法

添加IMEX=1; 到你的openrowset connectionstring并添加一个包含文本值的虚拟第一行

按照我的答案在导入错误使用Openrowset获取更多的细节