指向SQL语句

时间:2016-04-27 09:36:27

标签: sql excel oledb

我必须从Excel表格中提取数据列表,该表格在列标题中有一个点。如果我删除该点一切都很完美,但如果我保持这一点,那么我会得到一条错误消息。

工作:ClientIDMode = "Static"

不工作:SELECT DISTINCT Ty FROM dbStock

  

System.Data.OleDb.OleDbException(0x80040E14):语法错误(缺失   运算符)在查询表达式'Ty。'。

我在互联网上搜索,但找不到任何相关信息。 我尝试将SELECT DISTINCT Ty. FROM dbStock放在Ty.''""之间,但没有运气。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

EDIT2:只是把它放到答案中(来自评论)

解决方案是尝试SELECT * FROM ...。这样,该列的名称已转换为Ty#。 OP可以继续这个名字......

从此

Working: SELECT DISTINCT Ty FROM dbStock
Not working: SELECT DISTINCT Ty. FROM dbStock

我认为,该列的名称实际上是Ty。让引擎思考的一点是,这是一个多部分限定符(如tablename.columnname)。

您可以使用

SELECT DISTINCT Ty AS [Ty.] FROM dbStock

如果您需要输出列名称中的点...

编辑:只是提到了它:

SQL-Server可以处理这个......

declare @tbl TABLE([Ty.] INT);
INSERT INTO @tbl VALUES(1),(2),(3);

SELECT * FROM @tbl
SELECT [Ty.] FROM @tbl

答案 1 :(得分:0)

您可以使用

SELECT DISTINCT [Ty.]

OR

SELECT DISTINCT "Ty." // In this case, check if QUOTED_IDENTIFIER is set to ON.