AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 35480
Accepted
Rachel
Rachel
Asked: 2013-02-27 08:22:30 +0800 CST2013-02-27 08:22:30 +0800 CST 2013-02-27 08:22:30 +0800 CST

Existe alguma diferença entre colocar um alias de coluna no início ou no final da definição da coluna?

  • 772

Eu sempre vi e escrevi meus apelidos de coluna como

SELECT 1 as ColumnName

mas hoje me 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 usar?

Pessoalmente, acho que a segunda seria mais fácil de ler/manter para definições de coluna mais longas (bom exemplo aqui deste artigo ), no entanto, nunca vi a segunda sintaxe usada antes de hoje, então estou me perguntando se há algum motivo para não estar usando isso.

sql-server t-sql
  • 2 2 respostas
  • 2448 Views

2 respostas

  • Voted
  1. Best Answer
    Thomas Stringer
    2013-02-27T08:38:58+08:002013-02-27T08:38:58+08:00

    Não há diferença na funcionalidade subjacente dos dois tipos de aliasing ( asoposto a =). 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 é autoexplicativo. Quando você tiver SELECT ColumnName = 1, acho que seria muito fácil confundir isso com definir uma variável naquelas longas noites cansadas. Você pode confundir isso SELECT @ColumnName = 1e isso seria uma funcionalidade completamente diferente. Portanto, para contornar qualquer possibilidade da consulta "double look", ou pior ainda...erro de entendimento/codificação, vou com SELECT 1 as ColumnName100% das vezes.

    Preferência pessoal, mas consistência (para você e dentro de sua equipe) é o rei . O que quer que você ache mais fácil, vá em frente e faça isso o tempo todo. Não há nada mais frustrante do que alternar para a solução de problemas/revisão/manutenção de código de alguém.

    A terceira maneira não mencionada é usar <Expression> <Alias>. Em outras palavras, sua segunda via sem a palavra- aschave. Eu acho que isso é tão ruim quanto o =símbolo. Falta legibilidade com o ganho de quê? Não digitar três caracteres extras ( ase um espaço). Não vale a pena.

    Para fins de exagero, dê uma olhada em uma consulta como esta:

    use AdventureWorks2012;
    go
    
    select
        [New Name] = Name,
        NewDepId = DepartmentID,
        GroupName as GName,
        ModifiedDate MyModDate
    from HumanResources.Department;
    

    Não é um código que eu gostaria de revisar.

    • 17
  2. Aaron Bertrand
    2013-02-27T08:49:17+08:002013-02-27T08:49:17+08:00

    Pessoalmente, acho alias = expressionmais fácil de ler e compreender. O motivo é que, quando estou solucionando problemas de uma SELECTinstrução que possui expressões longas, provavelmente desejo localizar a expressão por meio do nome da coluna, e não o contrário. Rápido, encontre a expressão que o aplicativo vê como alias2:

    SELECT
      alias1 = (long expression with aggregates and multiple column references),
      (long expression with aggregates and multiple column references AS alias2
    FROM ...
    

    Essa é a minha preferência. O seu pode ser diferente. Não há vantagem real em usar um ou outro, exceto por razões subjetivas / de gosto. O importante é que você escolha uma maneira de fazer isso e faça-o de forma consistente (e, a menos que jogue uma moeda, seja capaz de defender sua escolha quando se deparar com alguém que gosta da outra maneira). Mas se você escrever código para um DBA tão exigente quanto eu, esteja preparado para que ele seja reescrito . :-)

    Uma coisa que me deixa ainda mais forte é o uso de aspas simples em nomes alternativos, por exemplo

    column AS 'alias'
    'alias' = column
    

    Um formulário está obsoleto, mas ambos são muito difíceis de ler - e muitos novatos confundem o alias com uma string literal, já que é assim que parece. Pelas mesmas razões, eu absolutamente detesto o uso de aspas duplas ( "alias"). Se você precisar escapar do seu alias porque é uma palavra reservada ou foi mal escolhida ou formatada, use [square brackets].

    • 10

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Conceder acesso a todas as tabelas para um usuário

    • 5 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve