如何查询列名称中包含句点的Excel工作表

jar*_*edk 3 php sql excel odbc

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

tblExample
----------------------------------
| Column1 | Column 2 | Column 3. |
----------------------------------
| 1       | Mike     | 12345     |
| 2       | Sally    | 67890     |
| 3       | Mitchel  | 12345     |
| 1       | James    | 67890     |
----------------------------------
Run Code Online (Sandbox Code Playgroud)

现在让我们说我想用LIKE语句查询每一列.第一个我可以查询没有问题.

SELECT * FROM tblExample WHERE Column1 LIKE '%1%';
Run Code Online (Sandbox Code Playgroud)

第二个也很容易查询,但[]由于空间我必须使用括号.

SELECT * FROM tblExample WHERE [Column 2] LIKE '%Mi%';
Run Code Online (Sandbox Code Playgroud)

然而,第三栏给了我麻烦.当我尝试使用以下内容查询时:

SELECT * FROM tblExample WHERE [Column 3.] LIKE '%12345%';
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

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.
Run Code Online (Sandbox Code Playgroud)

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

是否有另一种方法可以使用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
Run Code Online (Sandbox Code Playgroud)

Den*_*cob 8

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