SQL JOIN在具有特殊字符和前导零的varchar上
我在joinvarchar
列时遇到问题。
我将通过产品代码更新Excel数据中的SQL数据,但是Twr_Kod
是varchar
并且它是与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获取更多的细节