我使用openquery
通过DAX SUMMARIZE函数从SSAS(表格立方体)创建表。 “ [”和“]”随附的列名。我将列名加载到临时表中,但由于包含“ E”,因此无法访问特定表。
如何编写可调用该特殊名称类型的查询?
我尝试过:
SELECT *
FROM #temp
WHERE [Report Date] = 'xxxx'
SELECT *
FROM #temp
WHERE [[Report Date]] = 'xxxx'
SELECT *
FROM #temp
WHERE '[Report Date]' = 'xxxx'
答案 0 :(得分:0)
如果您使用方括号来引用以方括号开头/结尾的名称,则它看起来像这样:
SELECT *
FROM #temp
WHERE [[Report Date]]] = 'xxxx'
SQLServer的原因是,如果名称用方括号引起来,则不关心用方括号括起来,但确实关心用方括号括起来,因此,名称中包含的方括号必须通过加倍来进行转义起来
因此,名称为:
[[Report Date]]]
1233333333333445
使用ANSI引号对此可能最清楚:
SELECT *
FROM #temp
WHERE "[Report Date]" = 'xxxx'
在引用名称时,始终避免使用'
-它们用于表示字符串,而不是标识符。说select x as 'hello world'
可能有用,但是尝试在诸如WHERE 'hello world' = ...
之类的查询中使用它是无效的,因为它被解释为字符串,而不是标识符。避免在选择中使用它来引用标识符,这意味着您不会再在where子句中错误地这样做