我有一些生成列名的动态SQL。一个简单的例子可能是这样的:
SELECT dbo.getSomething(123) [Eggs[scrambled] or Bacon[fried]]
最终的列名应为:
鸡蛋[炒蛋]或培根[炒]
如果我尝试运行它,它会在单词OR上出错(即使我用xyz替换它仍然会在该标记上出现错误)。如果我拿出方括号的内部集合,问题就解决了。所以我的结论是你不能嵌套方括号,除非你以某种方式逃避它们。
在这种情况下如何逃避它们?
答案 0 :(得分:20)
您可以使用quotename
功能查看正确的转义。
select quotename('Eggs[scrambled] or Bacon[fried]')
返回
[Eggs[scrambled]] or Bacon[fried]]]
因此所有关闭的方括号都需要加倍。
答案 1 :(得分:8)
在内嵌]
[]
SELECT [Eggs[scrambled]] or Bacon[fried]]] FROM Yummy
答案 2 :(得分:4)
SET QUOTED_IDENTIFIER默认为ON,因此无需转义任何内容
SELECT 1 AS "[Eggs[scrambled] or Bacon[fried]]"
答案 3 :(得分:1)
在查询Excel工作表的SSIS SQL语句中,必须用方括号代替括号以选择各个列。例如,选择“我的列[大列]”,您可以从[$ A1:AX10000]中选择[我的列(大列)]