别名中的方括号问题

Issue with square brackets in alias

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

我检索了具有如下值的字段列表 ("select fieldvalue as fielddescription"):

select
  152 as [weight],
  25 as [length] -- this query text is generated at runtime

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

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

select
  152 as [weight [kg]],
  25 as [length]

在这种情况下,“[重量[kg]],25 as [长度]”成为字段别名。 我通过放置双闭括号找到了解决方法:当我生成它们查询时,我将所有“] 替换为”]]”,在这种情况下,我的查询变为:

select
  152 as [weight [kg]]], --notice "]]]" = "]]" (substituted) + "]" (closing one)
  25 as [length]

这给出了正确的结果。

事实上,在我的实现中,我附加到 select 值,然后我添加 '[' + FIELD_DESCRIPTION + ']' 所以这就是我对方括号有疑问的原因。

如果我使用引号 (select 152 as "weight [kg]") 而不是方括号,我会在字段描述中遇到引号问题;因为我不想更改使用方括号的实现,所以我不认为引号是解决方案。

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

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

因此,在以编程方式创建字段别名时,我成功地将“]”替换为“]]”,这样我就无需更改实现。