我有一个通过 Excel 中的 SQLBulkCopy 填充的 sql 表。使用 Microsoft ACE 驱动程序完成复制。
我遇到了一个特定文件的问题 - 当它被加载到 sql 时,一些列(在 excel 中显示为空)包含一个奇数值。
例如,运行这个 sql:
SELECT
CONVERT(VARBINARY(10),MyCol),
LEN(MyCol)
FROM MyTab
会回来
0x, 0
即 - 将列中的值转换为varbinary
显示某些内容,但执行 varchar 的长度显示没有长度。我意识到显示的值是十六进制值的词干,但它到达那里很奇怪,而且检测起来有多难。
显然我可以清除 Excel 中的单元格,但我确实需要自动检测到这一点,因为最终用户也会遇到同样的问题。当数据得到处理时,它会导致进一步的问题。很难将问题从最终症状追溯到源头。
除了上述转换为varbinary
SSMS 中的输出之外,我还没有想出一种方法来检测这些值,无论是在 Excel 中还是通过 SQL 脚本来删除它们。
有任何想法吗?