2016-09-05 5 views
1

の角括弧で問題が発生すると、実行時にクエリが生成されます。私のアプリケーションでエイリアス

私は(「fielddescriptionとしてフィールド値を選択」)は、このような値を持つフィールドのリストを取得:

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

私の問題は、ユーザ定義のフィールドの説明、から来ています。上記の例では、ユーザーはフィールド "weight"という名前を付けましたが、1つのオプションは "weight [kg]"という名前です(アプリケーションでユーザーが好きなようにフィールドの名前を変更することができ、ユーザーは角括弧を選択できます)。

その場合、私のクエリは次のようになる。

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

この場合の "[重量[kg]で]、25 [長さ]としては、" フィールドエイリアスとなります。 私は二重の閉鎖ブラケットを置くことによって、回避策が見つかりました:私は、生成したとき、彼らは私がすべてを置き換える照会「]で 『』]]、この場合には、私のクエリは次のようになります。

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

を、これは正しい結果を与える

私の実装で実際に

私は値を選択するために追加した後、私は追加「[」+ FIELD_DESCRIPTION +「]」私は角括弧の問題を持っている理由これはです。

代わりに角括弧の私が使用している場合引用符(select 152 as "weight [kg]")私はフィールドの説明で引用符で問題がありますので、私は変更する必要はありません角括弧を使用するplementation私は解決策として引用符を考慮しません。

私の質問では、私の場合、「]」を「]]」と置き換えても安全ですか?もっとスマートで安全なソリューションがありますか?

+2

**この種の名前変更はSQLレベルで適用していますか? 'column0'、' column1'などで一般的な結果セットを生成することはできないのですか?この結果セットを消費する*アプリケーション/レポートビルダーでカスタム命名を実行しますか? –

+0

@TT。 QUOTENAMEは値の部分で問題を解決しますが、私の場合はエイリアス名に問題があります。エイリアスでQUOTENAMEを使用することはできません – LaBracca

+0

@Damien_The_Unbelieverあなたのアプローチは可能な方法ですが、私の実装はすでに完了しており、私はこの問題を解決しようとしています。フィールドに大括弧が定義されていない限り、すべて正常に動作します。この問題をすべて書き直すのを避けるためです。 – LaBracca

答えて

1

いくつかの試行の後、私の解決策は私の状況では問題ないとわかりました。

私はプログラムでフィールドエイリアスを作成するときに "]"を "]]"に置き換えることに成功しました。このようにして、impelmentationを変更する必要はありませんでした。

関連する問題