Tabellen-Aliasse: Änderungen bei der Namensauflösung für Spaltenbezeichner in Anführungszeichen¶
Achtung
Diese Verhaltensänderung ist in Bundle 2023_07 enthalten.
Den aktuellen Status des Bundles finden Sie unter Bundle-Verlauf.
In der FROM-Klausel einer SELECT-Anweisung können Sie die AS-Klausel verwenden, um einen Alias für die Tabelle und deren Spalten zu definieren. Beispiel:
SELECT * FROM my_table AS my_table_alias(my_column_1_alias, my_column_2_alias);
In dieser Ankündigung werden die Änderungen beschrieben, die bei der Auflösung von in Anführungszeichen gesetzten Spaltenbezeichnern im Tabellenalias vorgenommen werden:
- Vor der Änderung:
Wenn Sie den Spaltenbezeichner im Tabellenalias in Anführungszeichen setzen, werden die Anführungszeichen Teil des Spaltenalias.
Die folgende Abfrage definiert zum Beispiel einen Tabellenalias (table_alias) und einen Spaltenalias, der Anführungszeichen enthält („column_alias“):
SELECT * FROM table_1 AS my_table_alias("my_column_alias");
In der Ausgabe enthält der Name der ersten Spalte die Anführungszeichen (
"my_column_alias"
).Da die Anführungszeichen derzeit Teil des Namens des Spaltenalias sind, müssen Sie die Anführungszeichen einschließen, wenn Sie auf diesen Spaltenalias verweisen möchten. Wenn Sie zum Beispiel in der Liste der ausgewählten Spalten auf den Spaltenalias verweisen möchten, müssen Sie den Namen des Spaltenalias in Anführungszeichen setzen:
SELECT """my_column_alias""" FROM table_1 AS my_table_alias("my_column_alias");
Beachten Sie, dass im obigen Beispiel der Spaltenalias in Anführungszeichen eingeschlossen ist und die Anführungszeichen innerhalb des Spaltenaliasnamens mit zwei doppelten Anführungszeichen angegeben werden.
- Nach der Änderung:
Wenn Sie doppelte Anführungszeichen um den Spaltenbezeichner im Tabellenalias verwenden, werden die doppelten Anführungszeichen nicht als Teil des Spaltenalias verwendet.
SELECT * FROM table_1 AS my_table_alias("my_column_alias");
In der Ausgabe enthält der Name der ersten Spalte keine Anführungszeichen (
my_column_alias
).Abfragen, die Anführungszeichen innerhalb des Spaltenalias verwenden, schlagen mit einem „invalid identifier“-Fehler fehl:
SELECT """my_column_alias""" FROM table_1 AS my_table_alias("my_column_alias");
Wenn Sie Bezeichner in doppelten Anführungszeichen für Spalten in einem Tabellenalias verwenden, verwenden Sie einen der folgenden Ansätze, um Ihre SQL-Anweisungen zu korrigieren:
Wenn Sie die Spaltennamen unverändert beibehalten möchten (unter Beibehaltung der Anführungszeichen und der Groß-/Kleinschreibung), schreiben Sie die vorhandenen Abfragen so um, dass Sie allgemeine Tabellenausdrücke zur Definition von Spaltenaliassen verwenden.
Ändern Sie zum Beispiel:
SELECT """My_Column_Alias""" FROM table_1 AS my_table_alias("My_Column_Alias")
in:
WITH my_table_alias("""My_Column_Alias""") AS (SELECT * FROM table_1) SELECT """My_Column_Alias""" FROM my_table_alias
Wenn Sie die Ausgabespaltennamen der vorhandenen Abfragen ändern können, sollten Sie die Anführungszeichen aus den Spaltenalias-Definitionen entfernen.
Ändern Sie zum Beispiel:
SELECT """my_column_alias""" FROM table_1 AS my_table_alias("my_column_alias");
in:
SELECT my_column_alias FROM table_1 AS my_table_alias(my_column_alias);
Beachten Sie, dass diese Anweisung den Bezeichner
my_column_alias
mit Großbuchstaben ohne Anführungszeichen erstellt und auflöst. Wenn Sie diesen Ansatz verwenden, müssen Sie möglicherweise Code oder Anweisungen anpassen, die diesen Spaltenalias referenzieren.Anstatt auf die obige Spalte mit
"my_column_alias"
zuzugreifen, müssen Clientanwendungen in diesem Beispiel aufMY_COLUMN_ALIAS
verweisen.
Ref.: 881