ISNULL (T-SQL)

Berlaku untuk:yes SQL Server (semua versi yang didukung) YesAzure SQL Database YesAzure SQL Managed Instance yesAzure Synapse Analytics Analytics yesPlatform System (PDW)

Mengganti NULL dengan nilai pengganti yang ditentukan.

Topic link iconKonvensi Sintaksis T-SQL

Sintaks

ISNULL ( check_expression , replacement_value )  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 dan yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

check_expression
Adalah ekspresi yang akan diperiksa untuk NULL. check_expression bisa dari jenis apa pun.

replacement_value
Adalah ekspresi yang akan dikembalikan jika check_expression NULL. replacement_value harus berjenis yang secara implisit dapat dikonversi ke jenis check_expression.

Jenis Kembalian

Mengembalikan jenis yang sama dengan check_expression. Jika NULL harfiah disediakan sebagai check_expression, mengembalikan jenis data replacement_value. Jika NULL harfiah disediakan sebagai check_expression dan tidak ada replacement_value yang disediakan, mengembalikan int.

Keterangan

Nilai check_expression dikembalikan jika bukan NULL; jika tidak, replacement_value dikembalikan setelah dikonversi secara implisit ke jenis check_expression, jika jenisnya berbeda. replacement_value dapat dipotong jika replacement_value lebih panjang dari check_expression.

Catatan

Gunakan COALESCE (Transact-SQL) untuk mengembalikan nilai non-null pertama.

Contoh

A. Menggunakan ISNULL dengan AVG

Contoh berikut menemukan rata-rata berat semua produk. Ini menggantikan nilai 50 untuk semua entri NULL di Weight kolom Product tabel.

USE AdventureWorks2012;  
GO  
SELECT AVG(ISNULL(Weight, 50))  
FROM Production.Product;  
GO  

Berikut adalah tataan hasil.

-------------------------- 
59.79  
 
(1 row(s) affected)

B. Menggunakan ISNULL

Contoh berikut memilih deskripsi, persentase diskon, kuantitas minimum, dan kuantitas maksimum untuk semua penawaran khusus di AdventureWorks2012. Jika kuantitas maksimum untuk penawaran khusus tertentu adalah NULL, yang MaxQty ditunjukkan dalam tataan hasil adalah 0.00.

USE AdventureWorks2012;  
GO  
SELECT Description, DiscountPct, MinQty, ISNULL(MaxQty, 0.00) AS 'Max Quantity'  
FROM Sales.SpecialOffer;  
GO  

Berikut adalah hasil yang ditetapkan.

Deskripsi DiscountPct MinQty Kuantitas Maks
Tidak Ada Diskon 0.00 0 0
Diskon Volume 0,02 11 14
Diskon Volume 0,05 15 4
Diskon Volume 0.10 25 0
Diskon Volume 0,15 41 0
Diskon Volume 0.20 61 0
Gunung-100 Cl 0,35 0 0
Sport Helmet Di 0.10 0 0
Jalan-650 Overst 0,30 0 0
Ban Gunung S 0.50 0 0
Sport Helmet Di 0,15 0 0
LL Road Frame S 0,35 0 0
Touring-3000 Pr 0,15 0 0
Touring-1000 Pr 0.20 0 0
Half-Price Peda 0.50 0 0
Gunung-500 Si 0.40 0 0

(16 row(s) affected)

C. Pengujian untuk NULL dalam klausa WHERE

Jangan gunakan ISNULL untuk menemukan nilai NULL. Gunakan IS NULL sebagai gantinya. Contoh berikut menemukan semua produk yang ada NULL di kolom berat. Perhatikan ruang antara IS dan NULL.

USE AdventureWorks2012;  
GO  
SELECT Name, Weight  
FROM Production.Product  
WHERE Weight IS NULL;  
GO  

Contoh: Azure Synapse Analytics dan Analytics Platform System (PDW)

D. Menggunakan ISNULL dengan AVG

Contoh berikut menemukan rata-rata berat semua produk dalam tabel sampel. Ini menggantikan nilai 50 untuk semua entri NULL di Weight kolom Product tabel.

-- Uses AdventureWorks  
  
SELECT AVG(ISNULL(Weight, 50))  
FROM dbo.DimProduct;  

Berikut adalah hasil yang ditetapkan.

--------------------------   
52.88   

E. Menggunakan ISNULL

Contoh berikut menggunakan ISNULL untuk menguji nilai NULL di kolom MinPaymentAmount dan menampilkan nilai 0.00 untuk baris tersebut.

-- Uses AdventureWorks  
  
SELECT ResellerName,   
       ISNULL(MinPaymentAmount,0) AS MinimumPayment  
FROM dbo.DimReseller  
ORDER BY ResellerName;  
  

Berikut adalah tataan hasil parsial.

ResellerName MinimumPayment
Asosiasi Sepeda 0.0000
Toko Sepeda 0.0000
Toko Siklus 0.0000
Perusahaan Sepeda Yang Hebat 0.0000
Toko Sepeda Khas 200.0000
Layanan Penjualan & yang Dapat Diterima 0.0000

F. Menggunakan IS NULL untuk menguji NULL dalam klausa WHERE

Contoh berikut menemukan semua produk yang ada NULL di Weight kolom . Perhatikan ruang antara IS dan NULL.

-- Uses AdventureWorks  
  
SELECT EnglishProductName, Weight  
FROM dbo.DimProduct  
WHERE Weight IS NULL;  

Lihat juga

Ekspresi (Transact-SQL)
IS NULL (Transact-SQL)
Fungsi Sistem (Transact-SQL)
WHERE (Transact-SQL)
COALESCE (Transact-SQL)