Saya selalu melihat dan menulis alias kolom saya
SELECT 1 as ColumnName
tapi hari ini menemukan kueri yang digunakan
SELECT ColumnName = 1
Apakah ada perbedaan dalam bagaimana dua query ini dieksekusi? Atau adakah standar di antara DBA tentang yang mana yang akan digunakan?
Secara pribadi saya pikir ke-2 akan lebih mudah dibaca / dipelihara untuk definisi kolom yang lebih panjang (contoh yang baik di sini dari artikel ini ), namun saya belum pernah melihat sintaks ke-2 yang digunakan sebelum hari ini jadi saya bertanya-tanya apakah ada beberapa alasan saya tidak boleh menggunakannya.
sql-server
t-sql
best-practices
Rachel
sumber
sumber
Jawaban:
Tidak ada perbedaan dalam fungsi yang mendasari kedua jenis aliasing (
as
lawan=
). Apa intinya adalah apa yang Anda sebutkan: Keterbacaan dan pemeliharaan.Menurut pendapat saya , mantan (
<Expression> as <Alias>
) jauh lebih mudah dibaca karena cukup jelas. Ketika Anda memilikiSELECT ColumnName = 1
saya pikir itu akan sangat mudah untuk kesalahan itu sebagai pengaturan variabel pada malam-malam panjang yang lelah. Anda mungkin salah mengira bahwa sebagaiSELECT @ColumnName = 1
dan itu akan menjadi fungsi yang sama sekali berbeda. Oleh karena itu, untuk menghindari kemungkinan kueri "tampilan ganda", atau bahkan lebih buruk ... kesalahan dalam memahami / pengkodean, saya menggunakanSELECT 1 as ColumnName
100% waktu.Preferensi pribadi, tetapi konsistensi (untuk diri Anda dan dalam tim Anda) adalah raja . Apa pun yang Anda temukan paling mudah, ikuti dan lakukan sepanjang waktu. Tidak ada yang lebih menyebalkan daripada beralih bolak-balik untuk seseorang yang memecahkan masalah / meninjau / memelihara kode.
Cara ketiga yang tidak disebutkan adalah menggunakan
<Expression> <Alias>
. Dengan kata lain, cara kedua Anda tanpaas
kata kunci. Saya pikir ini sama buruknya dengan=
simbol. Itu kurang mudah dibaca untuk mendapatkan apa? Tidak mengetik tiga karakter tambahan (as
dan spasi). Tidak layak.Untuk tujuan berlebihan, lihat kueri seperti ini:
Bukan kode yang ingin saya tinjau.
sumber
Secara pribadi saya merasa
alias = expression
lebih mudah untuk membaca dan memahami. Alasannya adalah bahwa ketika saya memecahkan masalahSELECT
pernyataan yang memiliki ekspresi panjang, saya mungkin ingin menemukan ekspresi melalui nama kolom, bukan sebaliknya. Cepat, temukan ekspresi yang dilihat aplikasialias2
:Itu pilihan saya. Milik Anda mungkin berbeda. Tidak ada keuntungan sejati untuk menggunakan satu atau yang lain kecuali untuk alasan subjektif / rasa. Yang penting adalah bahwa Anda memilih satu cara untuk melakukannya, dan melakukannya secara konsisten (dan kecuali Anda melempar koin, dapat mempertahankan pilihan Anda ketika Anda menghadapi seseorang yang menyukai cara lain). Tetapi jika Anda menulis kode untuk DBA yang cerewet seperti saya, bersiaplah untuk itu akan ditulis ulang. :-)
Saya sudah membuat blog tentang hal ini .
Satu hal yang saya rasa lebih kuat adalah penggunaan tanda kutip tunggal di sekitar nama alias, misalnya
Satu bentuk sudah usang tetapi keduanya sangat sulit dibaca - dan banyak pemula mengira alias sebagai string literal, karena seperti itulah bentuknya. Untuk alasan yang sama, saya benar-benar membenci penggunaan tanda kutip ganda (
"alias"
). Jika Anda perlu keluar dari alias karena kata tersebut dilindungi undang-undang atau tidak dipilih atau diformat dengan buruk, gunakan[square brackets]
.sumber
as <Alias>
di baris terakhir dari definisi kolom. Tapi pasti setuju, itu sama pribadi dengan bagaimana Anda suka kopi Anda.AS Alias
ituAS
tidak terlalu berguna ketika saya memindai secara vertikal untuk nama tabel tertentu. Saya yakin kita tidak akan setuju di mana menempatkan koma juga. :-)AS
karena itulah yang kami gunakan sekarang (saya biasanya menambahkan baris baru sebelumAS ColumnName
jadi mereka berbaris), tapi saya setuju itu=
jauh lebih mudah dibaca dalam definisi kolom yang lebih panjang.