如何查询列名中带有句点的 Excel 工作表

Posted

技术标签:

【中文标题】如何查询列名中带有句点的 Excel 工作表【英文标题】:How to query an Excel sheet with a period in the column name 【发布时间】:2014-01-24 16:18:14 【问题描述】:

我有这个 Excel 电子表格,我想使用 ODBC Excel 驱动程序从 php 页面查询。以下表为例:

tblExample
----------------------------------
| Column1 | Column 2 | Column 3. |
----------------------------------
| 1       | Mike     | 12345     |
| 2       | Sally    | 67890     |
| 3       | Mitchel  | 12345     |
| 1       | James    | 67890     |
----------------------------------

现在假设我想用 LIKE 语句查询每一列。第一个我可以毫无问题地查询。

SELECT * FROM tblExample WHERE Column1 LIKE '%1%';

第二个也很容易查询,虽然我必须使用[] 括号因为空间。

SELECT * FROM tblExample WHERE [Column 2] LIKE '%Mi%';

但是,第三列给我带来了麻烦。当我尝试使用以下内容查询它时:

SELECT * FROM tblExample WHERE [Column 3.] LIKE '%12345%';

我收到此错误:

37000: [Microsoft][ODBC Excel Driver] '' is not a valid name. Make sure that it does not include invalid characters or punctuation and that it is not too long.

我很确定它在 (.) 之后需要一个表名,但我希望能够只发送列名并完成它。重命名列以删除句点确实有效,但不是我的首选解决方案。

还有其他方法可以使用 ODBC Excel 发送列名,让我可以保留 (.) 吗?

PHP 代码

$con = odbc_connect("my_data_source_name","","",SQL_CURSOR_FORWARD_ONLY);
$stmt = "SELECT * FROM tblExample WHERE [Column 3.] LIKE '%12345%'";
$qryrst = odbc_exec($con, $stmt); --fails here

【问题讨论】:

你能试试用双引号代替方括号吗? 试试SELECT * FROM tblExample WHERE "Column 3." LIKE '%12345%';,但我仍然遇到上述错误。好主意。 support.microsoft.com/kb/826763 - 尝试...WHERE Column 3[.] LIKE... SELECT * FROM tblExample WHERE [Column 3[.]] LIKE '%12345%' 导致37000: [Microsoft][ODBC Excel Driver] Syntax error in query expression '[Column 3[.]] LIKE '%12345%'' 如果您可以使用该选项,毫无疑问,这是最好的解决方案。 【参考方案1】:

我今天遇到了同样的问题。 结果是 ODBC 驱动程序转换了 .到 #。 因此,您应该将您的列称为 [Column 3#]。 希望这会有所帮助。

【讨论】:

也遇到了同样的问题。太糟糕了,这个答案没有更好地记录在那里。感谢您的回答! 你是救生员!

以上是关于如何查询列名中带有句点的 Excel 工作表的主要内容,如果未能解决你的问题,请参考以下文章

在 pandas 数据框中转换具有许多工作表(在 shett 名称中带有空格)的 excel 文件

如何合并多个工作表并用工作表名称重命名列名?

当从r输出到excel工作表(使用xlsx包)时,数据框列标题中的问号为什么显示为句点?

使用SQL语句如何对Excel工作表数据进行查询

c#如何使用OleDbCommand在指定列名下的Excel工作表的下一个可用行中添加指定值

如何复制包含 powerquery 的 Excel 工作表,以便新工作表上的查询独立于原始工作表上的查询