如何解决如何查询包含“ E”的TSQL col?
我使用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'
解决方法
如果您使用方括号来引用以方括号开头/结尾的名称,则它看起来像这样:
SELECT *
FROM #temp
WHERE [[Report Date]]] = 'xxxx'
SQLServer的原因是,如果名称用方括号引起来,则不关心用方括号括起来,但确实关心用方括号括起来,因此,名称中包含的方括号必须通过加倍来进行转义起来
因此,名称为:
[[Report Date]]]
1233333333333445
- 方括号-报价标识符
- 方括号-名称中的OSB
- 报告日期
- 双尖括号-告诉sql server名称中的双尖括号
- 单个方括号-带引号的标识符结尾
使用ANSI引号对此可能最清楚:
SELECT *
FROM #temp
WHERE "[Report Date]" = 'xxxx'
在引用名称时,始终避免使用'
-它们用于表示字符串,而不是标识符。说select x as 'hello world'
可能有用,但是尝试在诸如WHERE 'hello world' = ...
之类的查询中使用它是无效的,因为它被解释为字符串,而不是标识符。避免在选择中使用它来引用标识符,这意味着您不会再在where子句中错误地这样做
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。