Aliases de tabela: alterações na resolução de nomes para identificadores de coluna entre aspas

Atenção

Essa mudança de comportamento está no pacote 2023_07.

Para saber o status atual do pacote, consulte Histórico do pacote.

Na cláusula FROM em uma instrução SELECT, você pode usar a cláusula AS para definir um alias para a tabela e suas colunas. Por exemplo:

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

Este anúncio descreve as mudanças na forma como os identificadores de coluna entre aspas no alias da tabela são resolvidos:

Antes da mudança

Se você usar aspas duplas ao redor do identificador da coluna no alias da tabela, as aspas duplas se tornarão parte do alias da coluna.

Por exemplo, a consulta a seguir define um alias de tabela (alias_tabela) e um alias de coluna que inclui aspas (“alias_coluna”):

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

Na saída, o nome da primeira coluna inclui aspas ("my_column_alias").

Como as aspas atualmente fazem parte do nome do alias da coluna, se você precisar fazer referência a esse alias da coluna, deverá incluir as aspas. Por exemplo, se quiser fazer referência ao alias da coluna na lista de colunas selecionadas, você deverá incluir as aspas no nome do alias da coluna:

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

Observe que no exemplo acima, o alias da coluna está entre aspas e as aspas dentro do nome do alias da coluna são especificadas com dois caracteres de aspas duplas.

Após a mudança

Se você usar aspas duplas ao redor do identificador da coluna no alias da tabela, as aspas duplas não serão usadas como parte do alias da coluna.

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

Na saída, o nome da primeira coluna não inclui aspas (my_column_alias).

Consultas que usam aspas no alias da coluna falham com um erro de «identificador inválido»:

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

Se você usar identificadores entre aspas duplas para colunas em um alias de tabela, use uma das seguintes abordagens para corrigir suas instruções SQL:

  • Se você precisar manter os nomes das colunas como estão (preservando aspas e distinção entre maiúsculas e minúsculas), reescreva as consultas existentes para usar expressões de tabela comuns para definir aliases de coluna.

    Por exemplo, altere:

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

    para:

    WITH my_table_alias("""My_Column_Alias""")
        AS (SELECT * FROM table_1)
      SELECT """My_Column_Alias""" FROM my_table_alias
    
    Copy
  • Se você puder alterar os nomes das colunas de saída das consultas existentes, considere remover aspas das definições de alias de coluna.

    Por exemplo, altere:

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

    para:

    SELECT my_column_alias
      FROM table_1 AS my_table_alias(my_column_alias);
    
    Copy

    Observe que esta instrução cria e resolve o identificador my_column_alias como caracteres maiúsculos sem aspas. Se você usar essa abordagem, talvez seja necessário ajustar o código ou as instruções que se referem a esse alias de coluna.

    Por exemplo, em vez de acessar a coluna acima usando "my_column_alias", os aplicativos clientes podem precisar referir-se a ela como MY_COLUMN_ALIAS.

Ref: 881