Siempre he visto y escrito mis alias de columna como
SELECT 1 as ColumnName
pero hoy encontré una consulta que usaba
SELECT ColumnName = 1
¿Hay alguna diferencia en cómo se ejecutan estas dos consultas? ¿O hay un estándar entre los DBA sobre cuál usar?
Personalmente, creo que la segunda sería más fácil de leer / mantener para definiciones de columna más largas (buen ejemplo aquí de este artículo ), sin embargo, nunca he visto la segunda sintaxis utilizada antes de hoy, así que me pregunto si hay alguna razón por la que no debería ser usándolo
sql-server
t-sql
best-practices
Rachel
fuente
fuente
Respuestas:
No hay diferencia en la funcionalidad subyacente de los dos tipos de alias (
as
opuesto a=
). Todo se reduce exactamente a lo que mencionó: legibilidad y facilidad de mantenimiento.En mi opinión, el primero (
<Expression> as <Alias>
) es mucho más legible ya que se explica por sí mismo. Cuando lo haya hechoSELECT ColumnName = 1
, creo que sería bastante fácil confundir eso como establecer una variable en esas largas noches cansadas. Puede confundir eso comoSELECT @ColumnName = 1
y eso sería una funcionalidad completamente diferente. Por lo tanto, para evitar cualquier posibilidad de la consulta "doble mirada", o peor aún ... error en la comprensión / codificación, voy con elSELECT 1 as ColumnName
100% del tiempo.Preferencia personal, pero la consistencia (para usted y dentro de su equipo) es el rey . Sea lo que sea más fácil, ve y hazlo todo el tiempo. No hay nada más frustrante que cambiar de una persona a otra para solucionar problemas / revisar / mantener el código.
La tercera forma no mencionada es usar
<Expression> <Alias>
. En otras palabras, su segunda forma sin laas
palabra clave. Creo que esto es tan malo como el=
símbolo. ¿Carece de legibilidad en beneficio de qué? No escribir tres caracteres adicionales (as
y un espacio). No vale la pena.Para fines de exageración, eche un vistazo a una consulta como esta:
No es un código que me gustaría revisar.
fuente
Personalmente, me resulta
alias = expression
más fácil de leer y comprender. La razón es que cuando estoy solucionando un problema de unaSELECT
declaración que tiene expresiones largas, probablemente quiera encontrar la expresión a través del nombre de la columna, no al revés. Rápido, encuentre la expresión que la aplicación ve comoalias2
:Esa es mi preferencia. El tuyo puede ser diferente. No existe una verdadera ventaja al usar uno u otro, excepto por razones subjetivas / gustativas. Lo importante es que elijas una forma de hacerlo y lo hagas de manera consistente (y a menos que arrojes una moneda, podrás defender tu elección cuando te enfrentes a alguien a quien le gusta la otra). Pero si escribe código para un DBA tan quisquilloso como yo, prepárese para que se reescriba. :-)
He blogueado sobre esto .
Una cosa que me hace sentir aún más fuerte es el uso de comillas simples alrededor de los nombres de alias, p. Ej.
Una forma está en desuso, pero ambas son muy difíciles de leer, y muchos novatos confunden el alias como un literal de cadena, ya que así es como se ve. Por las mismas razones, detesto absolutamente el uso de comillas dobles (
"alias"
). Si necesita escapar de su alias porque es una palabra reservada o está mal elegida o formateada, úsela[square brackets]
.fuente
as <Alias>
en la última línea de la definición de columna. Pero definitivamente de acuerdo, es tan personal como cómo te gusta tu café.AS Alias
eso,AS
no es muy útil cuando estoy escaneando verticalmente un nombre de tabla en particular. Apuesto a que no estaríamos de acuerdo sobre dónde poner las comas también. :-)AS
eso, ya que eso es lo que usamos en este momento (generalmente agrego una nueva línea antesAS ColumnName
para que se alineen aproximadamente), pero estoy de acuerdo en que=
es mucho más legible en definiciones de columna más largas.