Zawsze widziałem i zapisywałem moje aliasy kolumn jako
SELECT 1 as ColumnName
ale dzisiaj natrafiłem na zapytanie, które wykorzystało
SELECT ColumnName = 1
Czy jest jakaś różnica w sposobie wykonywania tych dwóch zapytań? A może wśród DBA istnieje standard, którego użyć?
Osobiście uważam, że 2. byłoby łatwiejsze do odczytania / utrzymania dla dłuższych definicji kolumn (dobry przykład tutaj z tego artykułu ), jednak nigdy nie widziałem drugiej składni używanej dzisiaj, więc zastanawiam się, czy jest jakiś powód, dla którego nie powinienem być Użyj tego.
sql-server
t-sql
best-practices
Rachel
źródło
źródło
Odpowiedzi:
Nie ma różnicy w podstawowej funkcjonalności dwóch rodzajów aliasingu (w
as
przeciwieństwie do=
). Sprowadza się do dokładnie tego, o czym wspomniałeś: Czytelność i łatwość konserwacji.Moim zdaniem, pierwsza (
<Expression> as <Alias>
) jest znacznie bardziej czytelna, ponieważ sama wyjaśnia. Jeśli takSELECT ColumnName = 1
, myślę, że łatwo byłoby pomylić to z ustawieniem zmiennej w te długie, zmęczone noce. Możesz pomylić to jakoSELECT @ColumnName = 1
i to będzie zupełnie inna funkcjonalność. Dlatego, aby ominąć jakąkolwiek możliwość zapytania „podwójne spojrzenie”, lub nawet gorzej… błąd w zrozumieniu / kodowaniu, idę zeSELECT 1 as ColumnName
100% przypadków.Osobiste preferencje, ale konsekwencja (dla ciebie i twojego zespołu) jest królem . Cokolwiek znajdziesz najłatwiej, idź i rób to cały czas. Nie ma nic bardziej frustrującego niż przełączanie się w przód i w tył dla kogoś, kto rozwiązuje problem / przegląda / utrzymuje kod.
Trzecim nie wymienionym sposobem jest użycie
<Expression> <Alias>
. Innymi słowy, Twój drugi sposób bezas
słowa kluczowego. Myślę, że to jest tak samo złe jak=
symbol. Brakuje czytelności na zysk czego? Nie wpisuję trzech dodatkowych znaków (as
i spacji). Nie warty tego.Dla celów przesady spójrz na takie zapytanie:
Nie kod, który chciałbym sprawdzić.
źródło
Osobiście uważam, że
alias = expression
łatwiej jest je czytać i rozumieć. Powodem jest to, że kiedy rozwiązuję problem zSELECT
wyrażeniem zawierającym długie wyrażenia, prawdopodobnie chcę znaleźć wyrażenie według nazwy kolumny, a nie na odwrót. Szybko znajdź wyrażenie, które aplikacja widzi jakoalias2
:To moja preferencja. Twoje mogą być inne. Nie ma żadnej prawdziwej korzyści z używania jednego lub drugiego, z wyjątkiem powodów subiektywnych / smakowych. Ważne jest, aby wybrać jeden sposób, aby to zrobić i robić to konsekwentnie (i chyba że rzucisz monetą, będziesz w stanie obronić swój wybór, gdy spotkasz kogoś, kto lubi inną drogę). Ale jeśli napiszesz kod dla DBA tak wybrednego jak ja, przygotuj się na jego przepisanie. :-)
Napisałem o tym na blogu .
Jedną z rzeczy, która wydaje mi się jeszcze silniejsza, jest stosowanie pojedynczych cudzysłowów wokół nazw aliasów, np
Jedna forma jest przestarzała, ale obie są bardzo trudne do odczytania - i wielu początkujących myli alias jako dosłowny ciąg, ponieważ tak to wygląda. Z tych samych powodów absolutnie nie znoszę używania podwójnych cudzysłowów (
"alias"
). Jeśli musisz uciec od swojego aliasu, ponieważ jest to słowo zastrzeżone lub jest źle wybrane lub sformatowane, użyj[square brackets]
.źródło
as <Alias>
ostatni wiersz definicji kolumny. Ale zdecydowanie się zgadzam, to tak osobiste, jak lubisz swoją kawę.AS Alias
tego,AS
nie jest to bardzo przydatne, gdy skanuję pionowo w poszukiwaniu konkretnej nazwy tabeli. Założę się, że nie zgodzilibyśmy się również, gdzie umieścić przecinki. :-)AS
tym, ponieważ właśnie tego używamy teraz (zwykle dodam wcześniej nowąAS ColumnName
linię, więc z grubsza się wyrównują), ale zgadzam się, że=
jest to bardziej czytelne w dłuższych definicjach kolumn.