如何查询列名中带有句点的 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包)时,数据框列标题中的问号为什么显示为句点?