如何查询名称中包含括号()的SQL列?

时间:2014-08-08 18:08:33

标签: sql sql-server excel ssis wizard

列名称类似于:“Ab。(Cd)”

它有,'。'以及列名中的()。

我在列名称周围尝试了方括号[],并且尝试了''和“”但没有取得多大成功。请帮忙。

我使用SQL Server导入和导出向导导入一些数据。查询如下所示:

Select 'Trans. Z4 (St 85)' from `'Monthly Prices$'`

使用的完整SQL语句是:

以下是查询:Select F1, HH, AECO, Sumas, Stanfield, Malin, [PG&E], Opal, SoCal, SJ, wTX, sTX, HSC, FGTZ3, [Trans. Z4 (St 85)], Dom, [Tetco M3], 'Trans. Z6 (NY)', AGT, Dawn, Chi, Midcon from 'Monthly Prices$'

请注意,“每月价格$”表格是我尝试导入的Excel工作簿中的工作表。

3 个答案:

答案 0 :(得分:2)

您的查询:

Select 'Trans. Z4 (St 85)' from 'Monthly Prices$'

你不能从字符串中SELECT。您需要在表名周围使用方括号:

Select 'Trans. Z4 (St 85)' from [Monthly Prices$]

但这只是问题的一半。如果你运行它,你会在每一行得到相同的字符串,“Trans.Z4(St 85)”。您还需要为该列名使用方括号:

Select [Trans. Z4 (St 85)] from [Monthly Prices$]

答案 1 :(得分:1)

我认为这是向导,这是你的问题。通常,向导对SQL的理解不如在SSMS中编写语句那样强大。我能够使用您的列名创建一个电子表格,但如果我不使用sql语句导入整个表,则只能使用向导导入它。这对你有用吗?我可以使用这些名称在SSM中使用括号正确地查询表格。

答案 2 :(得分:0)

接下来是谁来回答这个问题,这里是:

Excel SQL界面的列名很糟糕。您的问题是点.而不是括号()。您必须用尖锐的#替换它才能让Excel解析,但是由于它认为其中带有尖锐的单词是(日期)格式,因此还必须将其与反引号`或方括号[]绑定。

正确的查询是:

Select 'Trans# Z4 (St 85)' from [Monthly Prices$]