Sql server alias中方括号的问题

Sql server alias中方括号的问题,sql-server,sql-server-2008-r2,alias,square-bracket,Sql Server,Sql Server 2008 R2,Alias,Square Bracket,在我的应用程序中,我在运行时生成一个查询 我检索具有如下值的字段列表(“选择fieldvalue作为fielddescription”): 我的问题来自用户定义的字段描述。在上面的示例中,用户将字段命名为“weight”,但一个选项是将其命名为“weight[kg]”(在应用程序中,用户可以根据自己的喜好重命名字段,用户可以选择方括号) 在这种情况下,我的查询变成: select 152 as [weight [kg]], 25 as [length] select 152 as

在我的应用程序中,我在运行时生成一个查询

我检索具有如下值的字段列表(“选择fieldvalue作为fielddescription”):

我的问题来自用户定义的字段描述。在上面的示例中,用户将字段命名为“weight”,但一个选项是将其命名为“weight[kg]”(在应用程序中,用户可以根据自己的喜好重命名字段,用户可以选择方括号)

在这种情况下,我的查询变成:

select
  152 as [weight [kg]],
  25 as [length]
select
  152 as [weight [kg]]], --notice "]]]" = "]]" (substituted) + "]" (closing one)
  25 as [length]
在这种情况下,“[weight[kg]],25作为[length]”成为字段别名。 我找到了一个解决方法,放了两个闭包括号:当我生成查询时,我将所有“]替换为“]]”,在这种情况下,我的查询变成:

select
  152 as [weight [kg]],
  25 as [length]
select
  152 as [weight [kg]]], --notice "]]]" = "]]" (substituted) + "]" (closing one)
  25 as [length]
这给出了正确的结果

事实上,在我的实现中,我附加了select值,然后添加了“['+FIELD_DESCRIPTION+']”,这就是为什么我对方括号有问题的原因

如果不是方括号,我使用引号(<代码>选择152作为“权重[kg]”<代码>),我将在字段描述中引用一个问题;因为我不想改变使用方括号的实现,所以我不认为引号是解决方案。


我的问题是:在我的情况下,用“]]”替换“]]”安全吗?你看到更智能、更安全的解决方案了吗?

经过一些试验,我发现这个解决方案适合我的情况


因此,我成功地将“]”替换为“]]“以编程方式创建字段别名时,我不需要更改推进。

您必须在SQL级别应用这种重命名吗?是否不可能仅使用
column0
column1
等生成通用结果集,然后在应用程序/报表生成器/使用此结果集的任何对象中执行自定义命名?@TT。QUOTENAME将解决值部分中的问题,但在我的情况下,问题在别名中,我不能在值部分中使用QUOTENAMEalias@Damien_The_Unbeliever您的方法是可行的,但我的实现已经完成,而且非常复杂,所以我试图解决这个问题:除非一个字段的定义中没有方括号,否则一切都可以正常工作,所以为了避免重写我问的所有问题。不知何故,同样的问题在这里:但公认的答案并不是问题的答案