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?
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? –
@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
@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