Alias de table : modifications de la résolution des noms pour les identificateurs de colonne cités

Attention

Ce changement de comportement est présent dans le bundle 2023_07.

Pour connaître le statut actuel du bundle, reportez-vous à Historique du bundle.

Dans la clause FROM d’une instruction SELECT, vous pouvez utiliser la clause AS pour définir un alias pour la table et ses colonnes. Par exemple :

SELECT * FROM my_table AS my_table_alias(my_column_1_alias, my_column_2_alias);
Copy

Cette annonce décrit les changements apportés à la manière dont les identificateurs de colonne cités dans l’alias de table sont résolus :

Avant la modification:

Si vous utilisez des guillemets doubles autour de l’identificateur de la colonne dans l’alias de table, les guillemets doubles deviennent partie intégrante de l’alias de colonne.

Par exemple, la requête suivante définit un alias de table (alias_table) et un alias de colonne qui comprend des guillemets (« alias_colonne ») :

SELECT * FROM table_1 AS my_table_alias("my_column_alias");
Copy

Dans le résultat, le nom de la première colonne comprend les guillemets ("my_column_alias").

Comme les guillemets font actuellement partie du nom de l’alias de colonne, si vous devez faire référence à cet alias de colonne, vous devez inclure les guillemets. Par exemple, si vous souhaitez faire référence à l’alias de colonne dans la liste des colonnes sélectionnées, vous devez inclure les guillemets dans le nom de l’alias de colonne :

SELECT """my_column_alias""" FROM table_1 AS my_table_alias("my_column_alias");
Copy

Notez que dans l’exemple ci-dessus, l’alias de colonne est entre guillemets et que les guillemets à l’intérieur du nom de l’alias de colonne sont spécifiés par deux caractères de guillemets doubles.

Après la modification:

Si vous utilisez des guillemets doubles autour de l’identificateur de la colonne dans l’alias de table, les guillemets doubles ne sont pas utilisés dans le cadre de l’alias de colonne.

SELECT * FROM table_1 AS my_table_alias("my_column_alias");
Copy

Dans le résultat, le nom de la première colonne n’inclut pas les guillemets (my_column_alias).

Les requêtes qui utilisent des guillemets dans l’alias de la colonne échouent avec une erreur « identificateur non valide » :

SELECT """my_column_alias""" FROM table_1 AS my_table_alias("my_column_alias");
Copy

Si vous utilisez des identificateurs entre guillemets doubles pour les colonnes d’un alias de table, utilisez l’une des approches suivantes pour corriger vos instructions SQL :

  • Si vous devez conserver les noms de colonnes tels quels (en préservant les guillemets et la sensibilité à la casse), réécrivez les requêtes existantes afin d’utiliser des expressions de table communes pour définir les alias de colonnes.

    Par exemple, modifier :

    SELECT """My_Column_Alias"""
      FROM table_1 AS my_table_alias("My_Column_Alias")
    
    Copy

    en :

    WITH my_table_alias("""My_Column_Alias""")
        AS (SELECT * FROM table_1)
      SELECT """My_Column_Alias""" FROM my_table_alias
    
    Copy
  • Si vous pouvez modifier les noms des colonnes de sortie des requêtes existantes, envisagez de supprimer les guillemets des définitions des alias de colonnes.

    Par exemple, modifier :

    SELECT """my_column_alias"""
      FROM table_1 AS my_table_alias("my_column_alias");
    
    Copy

    en :

    SELECT my_column_alias
      FROM table_1 AS my_table_alias(my_column_alias);
    
    Copy

    Notez que cette instruction crée et résout l’identificateur my_column_alias sous forme de caractères majuscules sans guillemets. Si vous utilisez cette approche, vous devrez peut-être adapter le code ou les instructions qui font référence à cet alias de colonne.

    Par exemple, au lieu d’accéder à la colonne ci-dessus en utilisant "my_column_alias", les applications clientes peuvent avoir besoin de s’y référer en tant que MY_COLUMN_ALIAS.

Réf : 881