Eu sempre vi e escrevi meus aliases de coluna como
SELECT 1 as ColumnName
mas hoje deparei com uma consulta que usava
SELECT ColumnName = 1
Existe alguma diferença em como essas duas consultas são executadas? Ou existe um padrão entre os DBAs sobre qual deles usar?
Pessoalmente acho que o segundo seria mais fácil de ler / manter em definições de coluna mais longos (bom exemplo aqui a partir deste artigo ), no entanto eu nunca vi o 2º sintaxe usada antes de hoje, então estou querendo saber se há alguma razão eu não deveria ser usando isso.
sql-server
t-sql
best-practices
Rachel
fonte
fonte
Respostas:
Não há diferença na funcionalidade subjacente dos dois tipos de alias (
as
ao contrário de=
). O que se resume é exatamente o que você mencionou: Legibilidade e manutenção.Na minha opinião, o primeiro (
<Expression> as <Alias>
) é muito mais legível, pois é auto-explicativo. Quando você temSELECT ColumnName = 1
, acho que seria muito fácil confundir isso como definir uma variável nessas longas noites cansadas. Você pode confundir isso comoSELECT @ColumnName = 1
e isso seria uma funcionalidade completamente diferente. Portanto, para contornar qualquer possibilidade da consulta "look duplo", ou ainda pior ... erro no entendimento / codificação, vou comSELECT 1 as ColumnName
100% do tempo.A preferência pessoal, mas a consistência (para você e para sua equipe) é o rei . O que você achar mais fácil, faça e faça isso o tempo todo. Não há nada mais frustrante do que alternar para alguém solucionar problemas / revisar / manter o código.
A terceira maneira não mencionada é usar
<Expression> <Alias>
. Em outras palavras, sua segunda maneira sem aas
palavra - chave. Eu acho que isso é tão ruim quanto o=
símbolo. Falta legibilidade ao ganho de quê? Não digitando três caracteres extras (as
e um espaço). Não vale a pena.Para fins de exagero, dê uma olhada em uma consulta como esta:
Não é um código que eu gostaria de revisar.
fonte
Pessoalmente, acho
alias = expression
mais fácil ler e compreender. O motivo é que, quando estou solucionando problemas de umaSELECT
instrução que possui expressões longas, provavelmente desejo encontrar a expressão pelo nome da coluna, e não o contrário. Rápido, encontre a expressão que o aplicativo vê comoalias2
:Essa é a minha preferência. O seu pode ser diferente. Não há verdadeira vantagem em usar um ou outro, exceto por razões subjetivas / de gosto. O importante é que você escolha uma maneira de fazê-lo, e faça-o de forma consistente (e, a menos que você jogue uma moeda, seja capaz de defender sua escolha quando se deparar com alguém que gosta do outro lado). Mas se você escrever um código para um DBA tão exigente quanto eu, esteja preparado para ser reescrito. :-)
Eu escrevi sobre isso .
Uma coisa sobre a qual me sinto ainda mais forte é o uso de aspas simples em torno de nomes alternativos, por exemplo,
Um formulário está obsoleto, mas ambos são muito difíceis de ler - e muitos iniciantes confundem o alias como uma string literal, pois é assim que parece. Pelas mesmas razões, detesto absolutamente o uso de aspas duplas (
"alias"
). Se você precisar escapar do seu alias por ser uma palavra reservada ou de outra forma mal escolhida ou formatada, use[square brackets]
.fonte
as <Alias>
a última linha da definição da coluna. Mas definitivamente aceito, é tão pessoal quanto você gosta do seu café.AS Alias
isso,AS
não é muito útil quando estou digitalizando verticalmente um nome de tabela específico. Aposto que também discordamos sobre onde colocar as vírgulas. :-)AS
já que é isso o que usamos agora (normalmente eu adiciono uma nova linha antes,AS ColumnName
para que eles se alinhem aproximadamente), mas concordo que=
é muito mais legível em definições de coluna mais longas.