我在加入varchar
列时遇到问题。
我将按产品代码更新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)
我知道加入varchar列并不是一个好的解决方案,但它是必要的,所以请帮助 cast 不转换。
答案 0 :(得分:0)
问题是因为您的Excel列包含混合数据类型。 导入具有混合数据类型列的csv文件或excel文件时,它将使用null替换非显性类型。 (使用Oledb或Ace.Oledb)
解决方法强>
将IMEX=1;
添加到您的openrowset连接字符串并添加包含文本值的虚拟第一行
按照Import error using Openrowset的回答获取更多详情