テーブルエイリアス: 引用符で囲まれた列識別子の名前解決に関する変更¶
SELECT ステートメントの FROM 句では、 AS 句を使用して、テーブルとその列のエイリアスを定義できます。例:
SELECT * FROM my_table AS my_table_alias(my_column_1_alias, my_column_2_alias);
このお知らせでは、テーブルエイリアスの引用符で囲まれた列識別子の解決方法の変更について説明します。
- 変更前:
テーブルエイリアスの列識別子を二重引用符で囲むと、二重引用符は列エイリアスの一部になります。
例えば、以下のクエリはテーブルエイリアス(table_alias)と引用符を含む列エイリアス("column_alias")を定義します。
SELECT * FROM table_1 AS my_table_alias("my_column_alias");
出力では、最初の列の名前に引用符(
"my_column_alias"
)が含まれています。現在、引用符は列エイリアス名の一部であるため、この列エイリアスを参照する必要がある場合は、引用符を含める必要があります。例えば、選択された列のリストで列エイリアスを参照したい場合は、列エイリアス名に引用符を含める必要があります。
SELECT """my_column_alias""" FROM table_1 AS my_table_alias("my_column_alias");
上記の例では、列エイリアスは引用符で囲まれており、列エイリアス名の引用符は2つの二重引用符で指定されていることに注意してください。
- 変更後:
テーブルエイリアスの列識別子を二重引用符で囲むと、二重引用符は列エイリアスの一部として使用されません。
SELECT * FROM table_1 AS my_table_alias("my_column_alias");
出力では、最初の列の名前に引用符(
my_column_alias
)が含まれていません。列エイリアス内に引用符を使用したクエリは、「無効な識別子」エラーで失敗します。
SELECT """my_column_alias""" FROM table_1 AS my_table_alias("my_column_alias");
テーブルエイリアスの列に二重引用符で囲んだ識別子を使用している場合は、以下のいずれかの方法で SQL ステートメントを修正します。
列名をそのままにする必要がある場合は(引用符と大文字と小文字の区別を維持する)、列エイリアスを定義するために一般的なテーブル式を使用するように既存のクエリを書き換えます。
例えば、以下のように変更します。
SELECT """My_Column_Alias""" FROM table_1 AS my_table_alias("My_Column_Alias")
変更後:
WITH my_table_alias("""My_Column_Alias""") AS (SELECT * FROM table_1) SELECT """My_Column_Alias""" FROM my_table_alias
既存のクエリの出力列名を変更できる場合は、列エイリアス定義から引用符を削除することを検討します。
例えば、以下のように変更します。
SELECT """my_column_alias""" FROM table_1 AS my_table_alias("my_column_alias");
変更後:
SELECT my_column_alias FROM table_1 AS my_table_alias(my_column_alias);
このステートメントでは、
my_column_alias
識別子を、引用符なしの大文字で作成し、解決することに注意してください。この方法を使う場合、この列エイリアスを参照するコードやステートメントを調整する必要が生じる可能性があります。例えば、上記の列に
"my_column_alias"
でアクセスする代わりに、クライアントアプリケーションはそれをMY_COLUMN_ALIAS
として参照する必要が生じる場合があります。
参照: 881