2016-09-05 61 views
1

在我的應用程序中,我在運行時生成一個查詢。問題與方括號中的別名

我檢索領域,像這樣值的列表(「選擇fieldValue方法爲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] 

在這種情況下 「[重量[公斤],25爲[長度]」 變爲字段別名。 我發現了一個解決方法通過把雙封括號:當我產生他們詢問我全部替換「]與‘]’,在這種情況下,我的查詢變爲:

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

,這給正確的結果

其實我在執行我附加到選擇的值,然後我加上「[」 + FIELD_DESCRIPTION +「]」所以這就是爲什麼我與方括號的問題。

如果不是方括號我用引號(select 152 as "weight [kg]")我會在字段描述中引用問題;因爲我不想更改im使用方括號的情況下,我不認爲報價是解決方案。

我的問題是:在我的情況下用「]]替換」]「是否安全?你看到更智能,更安全的解決方案嗎?

+2

你有**在SQL級別應用這種重命名嗎?是不可能用'column0','column1'等生成一個通用的結果集,然後在應用程序/報告生成器中執行自定義命名/無論這個結果集是否消耗* –

+0

@TT。 QUOTENAME將解決價值部分的問題,但在我的情況下,問題是在別名中,我不能在別名中使用QUOTENAME – LaBracca

+0

@Damien_The_Unbeliever您的方法是一種可行的方法,但我的實現已經完成並且非常複雜,所以我想解決這個問題:一切正常,除非字段在其定義中沒有方括號,所以爲了避免重寫所有我問這個問題。 – LaBracca

回答

1

經過一番試驗後,我發現解決方案適合我的情況。

所以我成功地通過用「]]」替換「]」,以編程方式創建字段別名,這樣我就不需要改變推理了。