Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Menangani Nilai NULL Secara Efektif dengan Fungsi SQL COALESCE untuk Pemula

Artikel ini bertujuan untuk membantu pemula memahami dasar-dasar fungsi T-SQL COALESCE dan aplikasinya untuk menangani nilai NULL. Selain itu, pembaca akan mendapatkan pengalaman langsung dengan menerapkan beberapa contoh sederhana dari fungsi ini.

Kami juga akan menyoroti pentingnya fungsi T-SQL dalam menyelesaikan masalah analisis basis data.

Tentang Fungsi SQL COALESCE

Pertama, mari kita coba memahami fungsi ini dari sudut pandang pemula SQL.

Apa itu Fungsi SQL COALESCE?

Ini adalah fungsi T-SQL yang menerima banyak input tetapi mengembalikan nilai input pertama yang BUKAN NULL .

Apa masukannya?

Input (juga disebut argumen) dapat berupa apa saja yang dipasok ke fungsi yang diperlukan oleh fungsi tersebut untuk melakukan tugasnya.

misalnya, Kami memiliki fungsi yang disebut SUM() , yang menambahkan dua angka X dan Y . Angka-angka ini adalah input atau argumen dari fungsi.

Masukan atau argumen dapat berupa ekspresi.

Apa itu ekspresi?

Ekspresi dapat berupa konstanta, variabel, atau kolom yang pada akhirnya mengembalikan nilai data tunggal.

Namun, kami secara khusus berfokus pada kolom dari perspektif database, yang mungkin atau mungkin tidak berisi nilai.

Apa itu Nilai Null?

Nilai apa pun yang belum ditetapkan ke kolom tabel adalah NULL nilai. Dengan kata lain, NULL berarti nilai kolom yang tidak diinisialisasi dalam tabel .

Apa itu Nilai NOT NULL?

Ini adalah kebalikan dari nilai NULL. Jika nilai NULL adalah nilai kolom yang tidak ditetapkan atau tidak diinisialisasi, nilai NOT NULL adalah nilai kolom yang ditetapkan atau diinisialisasi .

misalnya, Kami memiliki dua kolom, ExamId dan ExamResult , dalam sebuah tabel.

Pengguna menetapkan ExamId=1 , tetapi tidak memberikan nilai apa pun ke ExamResult kolom. Kemudian ExamResult akan memiliki NULL di dalamnya. Atau, ExamId memiliki BUKAN NULL nilai karena itu adalah 1.

Bagaimana fungsi COALESCE bekerja?

Ini adalah fungsi yang menunjukkan nilai NOT NULL pertama dari kolom dalam daftar kolom yang diteruskan ke fungsi ini. Namun, kita dapat melewatkan sekumpulan ekspresi apa pun, yang dapat berupa daftar kolom tabel atau kumpulan angka (konstanta) atau variabel sederhana ke fungsi ini.

Sintaks

Sintaks SQL fungsi COALESCE (sesuai dokumentasi Microsoft) adalah sebagai berikut:

COALESCE ( expression [ ,...n ] )   

Kami telah mendefinisikan sebuah ekspresi sehingga dapat menerima sejumlah ekspresi tipe yang sama.

Kompatibilitas

Menurut dokumentasi Microsoft, fungsi ini kompatibel dengan banyak teknologi Microsoft SQL, termasuk yang berikut:

  1. Semua versi SQL Server yang didukung.
  2. Database SQL Azure (versi cloud SQL Server).

Perhatikan bahwa saya sengaja mengecualikan beberapa teknologi SQL Server lainnya untuk menjaga konteksnya tetap sederhana.

Contoh Sederhana Fungsi COALESCE

Mari kita siapkan database sampel tempat kita dapat menjalankan contoh kita. Buat database baru bernama 'CoalesceDB' untuk menjalankan contoh Anda terhadapnya. Gunakan kode berikut:

-- Create sample database
Create DATABASE CoalesceDB;
GO

Contoh ‘Nomor dengan NULL’

Jika kita meneruskan angka dan nilai NULL ke fungsi COALESCE dalam urutan apa pun, itu akan mengembalikan nomor karena itu adalah nilai NOT NULL pertama .

Gunakan skrip T-SQL terhadap database sampel sebagai berikut:

-- Use the sample database
USE CoalesceDB

-- Simple COALESCE example with number and NULL inputs (arguments) 
SELECT COALESCE(NULL,1) as COALESCE_Result

Anda akan mendapatkan hasil berikut:

Jika kita membalik urutan argumen sedemikian rupa sehingga angka 1 datang lebih dulu, dan NULL menjadi argumen kedua, kita masih mendapatkan hasil yang sama:

-- Simple COALESCE example with Number and NULL while number being first input (arguments) 
SELECT COALESCE(1,NULL) as COALESCE_Result_Number_First

Contoh ‘String dengan NULL’

Di sini kita akan melewatkan string (data tipe karakter) dan NULL ke fungsi ini untuk melihat hasilnya. Jalankan skrip berikut:

-- Simple COALESCE example with string and NULL inputs (arguments) 
SELECT COALESCE(NULL,'Second input') as COALESCE_Result

Hasilnya di bawah ini:

Demikian pula, membalikkan urutan akan memberi kita hasil yang sama seperti pada contoh sebelumnya.

Contoh ‘Dua Angka dan NULL’

Mari kita lihat perilaku fungsi COALESCE jika kita menyediakan tiga input (argumen), termasuk dua angka dan nilai NULL, ke fungsi ini.

Jalankan skrip berikut untuk contoh dengan dua angka dan satu nilai NULL:

-- Simple COALESCE example with two numbers and NULL inputs (arguments) 
SELECT COALESCE(NULL,2,3) as COALESCE_Result

Outputnya adalah sebagai berikut:

Sejak pertama BUKAN Nilai nol adalah 2 , fungsi COALESCE telah mengembalikannya, mengabaikan nilai setelahnya.

Sekarang mari kita membalik urutan angka dalam daftar argumen dengan skrip berikut:

-- Simple COALESCE example with two numbers reversed and NULL inputs (arguments) 
SELECT COALESCE(NULL,3,2) as COALESCE_Result 

Kumpulan hasil di bawah ini:

Contoh ‘Nomor, String, dan NULL’

Di sini kita mencampur tipe argumen dengan memasukkan angka, string, dan nilai NULL. Ketik kode berikut:

-- Simple COALESCE example with one number one string and NULL inputs (arguments) 
SELECT COALESCE(NULL,1,'Home') as COALESCE_Result

Hasilnya adalah sebagai berikut:

Meskipun fungsi COALESCE menunjukkan hasil yang benar, mengambil nilai NOT NULL pertama, yaitu 1, itu bukan contoh yang baik. Kita harus memberikan jenis argumen yang sama. Itu bisa berupa angka atau karakter atau jenis ekspresi lainnya.

Jika kita memberikan string 'Home' sebagai argumen pertama dan angka 1 sebagai argumen kedua, itu akan menyebabkan kesalahan. Itu sebabnya ekspresinya harus dari jenis yang sama.

Mari kita coba ini dengan menukar dua argumen NOT NULL:

-- Simple COALESCE example with one number one string first and NULL inputs (arguments) 
SELECT COALESCE(NULL,'Home',1) as COALESCE_Result

Outputnya di bawah ini:

Contoh ‘Dua String dengan NULL’

Jika kita memasukkan nilai NULL diikuti oleh dua nilai string, string pertama akan dikembalikan karena BUKAN NULL. Ini akan meninggalkan yang kedua. Jalankan skrip berikut untuk melihatnya beraksi:

-- Simple COALESCE example with two strings and NULL inputs (arguments) 
SELECT COALESCE(NULL,'Home','Office') as COALESCE_Result

Kumpulan hasil di bawah ini:

Contoh di atas membuktikan bahwa hasil yang akurat memerlukan penyediaan jenis argumen yang sama ke fungsi COALESCE. Argumen itu sendiri dapat berupa angka, string, variabel, atau kolom dari tabel.

Contoh Kasus Nyata

Sekarang kita mengambil skenario kasus nyata sederhana dari fungsi COALESCE yang menangani nilai NULL secara efektif.

Perusahaan penyedia layanan TI menyimpan detail pelanggannya, yang terbagi dalam dua kategori berikut:

  1. Pelanggan Bisnis.
  2. Pelanggan Perorangan.

Pelanggan bisnis adalah pelanggan yang mewakili perusahaan. Mereka memesan atas nama perusahaan (bisnis). Pelanggan individu adalah orang yang memesan layanan secara pribadi dan per penggunaan pribadi.

Kontak pelanggan bisnis ada di tabel Pelanggan di bawah kolom Work_Email. Alamat email pelanggan pribadi ada di kolom Personal_Email pada tabel.

Oleh karena itu, kolom ini akan mengisi kolom Work_Email atau Personal_Email untuk setiap pelanggan, bergantung pada jenisnya.

Buat Tabel Pelanggan

Kami akan membuat tabel yang disebut 'Pelanggan' di database sampel CoalesceDB. Ketik skrip berikut:

-- Using the sample database
Use CoalesceDB

-- Create Customer table
CREATE TABLE Customer
(CustomerId INT IDENTITY(1,1),
Work_Email VARCHAR(250) NULL,
Personal_Email VARCHAR(250) NULL,
CONSTRAINT [PK_Customer] PRIMARY KEY ([CustomerId]) 
)

Mengisi Tabel Pelanggan

Mari kita isi tabel pelanggan menggunakan skrip berikut:

-- Using the sample database
Use CoalesceDB

-- Populate Customer table
INSERT INTO Customer
(Work_Email,Personal_Email)
values
('[email protected]',NULL),
(NULL,'[email protected]'),
(NULL,'[email protected]'),
('[email protected]',NULL),
('[email protected]',NULL),
(NULL,'[email protected]')

-- Important: Please note the above email addresses are for demo purposes only

Lihat Tabel Pelanggan

Jalankan skrip berikut:

-- View customer table
SELECT [CustomerId], [Work_Email], [Personal_Email] FROM dbo.Customer

Outputnya adalah sebagai berikut:

Melihat Semua Kontak yang Tersedia menggunakan COALESCE

Sekarang, jika kita ingin melihat semua kontak yang tersedia dari semua pelanggan, mengabaikan NULL, kita dapat melakukannya dengan menggunakan fungsi COALESCE sebagai berikut:

--Viewing all available contacts using COALESCE 
SELECT C.CustomerId,COALESCE(Work_Email,Personal_Email) AS Email
FROM dbo.Customer C

Hasilnya adalah:

Hal yang harus dilakukan

Selamat! Anda memiliki dasar-dasar fungsi COALESCE dan memahami penggunaannya dalam menangani nilai NULL secara efektif.

Sekarang, Anda mungkin ingin melatih keterampilan baru lebih lanjut:

  1. Coba buat dan isi dua kolom lagi, Work_Phone dan Personal_Phone, di tabel Pelanggan. Lihat apakah Anda dapat menangani nilai NULL di kolom ini menggunakan contoh kasus nyata.
  2. Coba buat tampilan SQL untuk menampilkan semua kontak email pelanggan yang tersedia.
  3. Coba lewati keempat kolom (Work_Email, Personal_Email, Work_Phone, dan Personal_Phone) ke dalam fungsi. Tentu saja, Anda perlu memastikan mereka semua memiliki tipe data yang sama. Lihat sendiri hasilnya.

Baca juga

Penggunaan Praktis Fungsi SQL COALESCE

Jawaban Teratas untuk 5 Pertanyaan Pembakaran pada Fungsi SQL COALESCE


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mendapatkan Tanggal Saat Ini (Tanpa Waktu) di T-SQL

  2. 8 Perintah WP-CLI untuk Membersihkan dan Mengoptimalkan Situs Anda

  3. Menerapkan Pencadangan dan Pemulihan Basis Data Otomatis dengan Cara Default

  4. WhoIsActive Runner

  5. Baris Sasaran, Bagian 3:Anti Bergabung