2016-09-05 9 views
1

in meiner Anwendung erzeuge ich eine Abfrage zur Laufzeit.Problem mit eckigen Klammern in Alias ​​

mir eine Liste von Feldern mit Werten wie folgt abrufen („select fieldvalue als fielddescription“):

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

Mein Problem kommt aus der Feldbeschreibung, dh Benutzer definiert. Im obigen Beispiel hat der Benutzer das Feld "Gewicht" benannt, aber eine Option ist "Gewicht [kg]" (in der Anwendung kann der Benutzer das Feld wie gewünscht umbenennen und es kann sein, dass der Benutzer eckige Klammern wählt).

In diesem Fall meine Abfrage wird:

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

und in diesem Fall "[Gewicht [kg]], 25 als [Länge]" wird ein Feld Alias. fand ich eine Abhilfe durch doppelte Verschluss Klammern setzen: wenn ich erzeugen sie abfragen, ich alle „] mit‚]]‘ersetzen, meine Abfrage wird in diesem Fall:.

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

und das gibt das korrekte Ergebnis

in der Tat in meiner Implementierung i fügen Sie den Wert wählen und i fügen Sie dann ‚[‘ + field_description + ‚]‘ so ist der Grund, warum ich mit den eckigen Klammern ein Problem habe.

Wenn anstelle von eckigen Klammern verwendet i quotes (select 152 as "weight [kg]") ich hätte ein problem mit quotes in der feldbeschreibung, da ich das im nicht ändern möchte plementation, die eckige Klammern verwendet, halte ich Zitate nicht für eine Lösung.

Meine Frage ist: Ist es sicher, "]" durch "]]" in meinem Fall zu ersetzen? Sehen Sie eine intelligentere und sicherere Lösung?

+2

Müssen Sie diese Art der Umbenennung auf SQL-Ebene ** anwenden? Ist es nicht möglich, eine generische Ergebnismenge mit nur 'column0',' column1' usw. zu erzeugen, und führen Sie dann die benutzerdefinierte Benennung in der Anwendung/Berichtserstellung durch/was auch immer * verbraucht * diese Ergebnismenge? –

+0

@TT. QUOTENAME würde das Problem im Wertteil lösen, aber in meinem Fall ist das Problem im Aliasnamen, ich kann QUOTENAME nicht im Alias ​​ – LaBracca

+0

@Damien_The_Unbeliever verwenden, Ihre Methode ist ein möglicher Weg, aber meine Implementierung ist bereits erledigt und sehr komplex , also versuche ich, dieses Problem zu lösen: alles funktioniert gut, es sei denn, ein Feld hat keine eckigen Klammern in seiner Definition. Um zu vermeiden, alles neu zu schreiben, habe ich diese Frage gestellt. – LaBracca

Antwort

1

Nach einigen Versuchen fand ich heraus, dass die Lösung für meine Situation in Ordnung ist.

Also ich erfolgreich durch Ersetzen von "]" mit "]]" bei der Erstellung der Feld Alias ​​programmatisch, auf diese Weise hatte ich keine Notwendigkeit, die Umsetzung zu ändern.

Verwandte Themen