SQL 对具有特殊字符和前导零的 varchar 进行 JOIN

SQL JOIN on varchar with special characters and leading zeros

我在 varchar 列上加入时遇到问题。

我将按产品代码从 Excel 数据更新 SQL 数据,但 Twr_Kodvarchar,这是加入 [=] 的唯一方法28=]数据。

当有前导零时,转换为 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 没有转换。

问题是因为您的 excel 列包含混合数据类型。 导入包含混合数据类型列的 csv 文件或 excel 文件时,它将用 null 替换非主导类型。 (使用 Oledb 或 Ace.Oledb)

解决方法

IMEX=1; 添加到您的 openrowset 连接字符串并添加包含文本值的虚拟第一行

关注我在 的回答以获取更多详细信息