Sql server 使用查询中的子字符串函数将数据从Excel导入SQL server

Sql server 使用查询中的子字符串函数将数据从Excel导入SQL server,sql-server,excel,oledb,Sql Server,Excel,Oledb,我基本上遵循了MSDN页面上的示例: 只有一个例外。而不是像这样的简单查询 "Select * FROM [Sheet1$]" 我想做一些更复杂的事情,比如: "Select *, SUBSTRING(COLUMN_A, 1, 5) as STRIPPED_COL_A FROM [Sheet1$]" 但我收到一条无用的异常消息“IErrorInfo.GetDescription失败,E_失败(0x80004005)” 如果我不得不猜测,问题是由于在Excel或OleDB中使用了不受支持的子

我基本上遵循了MSDN页面上的示例:

只有一个例外。而不是像这样的简单查询

"Select * FROM [Sheet1$]"
我想做一些更复杂的事情,比如:

"Select *, SUBSTRING(COLUMN_A, 1, 5) as STRIPPED_COL_A FROM [Sheet1$]"
但我收到一条无用的异常消息“IErrorInfo.GetDescription失败,E_失败(0x80004005)”


如果我不得不猜测,问题是由于在Excel或OleDB中使用了不受支持的子字符串函数。因此,如何解决这个问题。

在他们的示例中,您使用Microsoft.ACE.OLEDB驱动程序通过
Provider=Microsoft.ACE.OLEDB.12.0
Provider=Microsoft.Jet.OLEDB.4.0
加载excel工作表,因此您必须使用MS Access中可用的查询格式和功能

Select *, MID(Column_A, <<start>>, <<length>>) as STRIPPED_COL_A from [Sheet1$]
从[Sheet1$]中选择*中间(列A)作为剥离列A

请记住其他特性,例如
不是零索引,而是以1开头作为字符串中的第一个字符。

在他们的示例中,您使用Microsoft.ACE.OLEDB驱动程序通过
Provider=Microsoft.ACE.OLEDB.12.0
Provider=Microsoft.Jet.OLEDB.4.0
加载excel工作表您必须使用MS Access中提供的查询格式和功能

Select *, MID(Column_A, <<start>>, <<length>>) as STRIPPED_COL_A from [Sheet1$]
从[Sheet1$]中选择*中间(列A)作为剥离列A
请记住其他特性,例如
不是零索引,而是以字符串中的第一个字符1开头