ISNULL (T-SQL)
Berlaku untuk: Titik akhir analitik SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Platform System (PDW) SQL di Microsoft Fabric Warehouse di Microsoft Fabric
NULL
Mengganti dengan nilai pengganti yang ditentukan.
Sintaks
ISNULL ( check_expression , replacement_value )
Argumen
check_expression
Ekspresi yang akan diperiksa untuk NULL
. check_expression bisa dari jenis apa pun.
replacement_value
Ekspresi yang akan dikembalikan jika check_expression adalah NULL
. replacement_value harus dari jenis yang secara implisit dapat dikonversi ke jenis check_expression.
Jenis yang dikembalikan
Mengembalikan jenis yang sama dengan check_expression. Jika literal NULL
disediakan sebagai check_expression, ISNULL
mengembalikan jenis data replacement_value. Jika harfiah NULL
disediakan sebagai check_expression dan tidak ada replacement_value yang disediakan, ISNULL
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 untuk mengembalikan nilai non-null pertama.
Contoh
Sampel kode Transact-SQL dalam artikel ini menggunakan AdventureWorks2022
database sampel atau AdventureWorksDW2022
, yang dapat Anda unduh dari halaman beranda Sampel Microsoft SQL Server dan Proyek Komunitas.
J. Menggunakan ISNULL dengan AVG
Contoh berikut menemukan rata-rata berat semua produk. Ini menggantikan nilai 50
untuk semua NULL
entri di Weight
kolom Product
tabel.
USE AdventureWorks2022;
GO
SELECT AVG(ISNULL(Weight, 50))
FROM Production.Product;
GO
Berikut set hasilnya.
59.79
B. Gunakan ISNULL
Contoh berikut memilih deskripsi, persentase diskon, kuantitas minimum, dan jumlah maksimum untuk semua penawaran khusus di AdventureWorks2022
. Jika kuantitas maksimum untuk penawaran khusus tertentu adalah NULL
, yang MaxQty
ditunjukkan dalam tataan hasil adalah 0.00
.
USE AdventureWorks2022;
GO
SELECT Description, DiscountPct, MinQty, ISNULL(MaxQty, 0.00) AS 'Max Quantity'
FROM Sales.SpecialOffer;
GO
Berikut set hasilnya.
Deskripsi | DiskonPct | MinQty | Kuantitas Maks |
---|---|---|---|
No Discount |
0.00 | 0 | 0 |
Volume Discount 11 to 14 |
0,02 | 11 | 14 |
Volume Discount 15 to 24 |
0,05 | 15 | 24 |
Volume Discount 25 to 40 |
0.10 | 25 | 40 |
Volume Discount 41 to 60 |
0,15 | 41 | 60 |
Volume Discount over 60 |
0.20 | 61 | 0 |
Mountain-100 Clearance Sale |
0,35 | 0 | 0 |
Sport Helmet Discount-2002 |
0.10 | 0 | 0 |
Road-650 Overstock |
0,30 | 0 | 0 |
Mountain Tire Sale |
0.50 | 0 | 0 |
Sport Helmet Discount-2003 |
0,15 | 0 | 0 |
LL Road Frame Sale |
0,35 | 0 | 0 |
Touring-3000 Promotion |
0,15 | 0 | 0 |
Touring-1000 Promotion |
0.20 | 0 | 0 |
Half-Price Pedal Sale |
0.50 | 0 | 0 |
Mountain-500 Silver Clearance Sale |
0,40 | 0 | 0 |
Contoh berikut menggunakan ISNULL
untuk mengganti NULL
nilai untuk Color
, dengan string None
.
USE AdventureWorks2022;
GO
SELECT ProductID,
Name,
ProductNumber,
ISNULL(Color, 'None') AS Color
FROM Production.Product;
Berikut adalah hasil parsial yang ditetapkan.
ProductID | Nama | ProductNumber | Warna |
---|---|---|---|
1 | Adjustable Race |
AR-5381 | Tidak |
2 | Bearing Ball |
BA-8327 | Tidak |
3 | BB Ball Bearing |
BE-2349 | Tidak |
4 | Headset Ball Bearings |
BE-2908 | Tidak |
316 | Blade |
BL-2036 | Tidak |
317 | LL Crankarm |
CA-5965 | Hitam |
318 | ML Crankarm |
CA-6738 | Hitam |
319 | HL Crankarm |
CA-7457 | Hitam |
C. Uji untuk NULL
dalam klausa WHERE
Jangan gunakan ISNULL
untuk menemukan NULL
nilai. Gunakan IS NULL
sebagai gantinya. Contoh berikut menemukan semua produk yang ada NULL
di kolom berat. Perhatikan spasi antara IS
dan NULL
.
USE AdventureWorks2022;
GO
SELECT Name, Weight
FROM Production.Product
WHERE Weight IS NULL;
GO
Contoh: Azure Synapse Analytics and 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 NULL
entri di Weight
kolom Product
tabel.
-- Uses AdventureWorksDW
SELECT AVG(ISNULL(Weight, 50))
FROM dbo.DimProduct;
Berikut set hasilnya.
52.88
E. Gunakan ISNULL
Contoh berikut menggunakan ISNULL
untuk NULL
menguji nilai 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 hasil parsial yang ditetapkan.
ResellerName | MinimumPayment |
---|---|
Asosiasi Sepeda | 0.0000 |
Toko Sepeda | 0.0000 |
Toko Siklus | 0.0000 |
Perusahaan Sepeda Yang Hebat | 0.0000 |
Toko Sepeda Biasa | 200.0000 |
Penjualan & Layanan yang Dapat Diterima | 0.0000 |
F. Gunakan IS NULL untuk menguji NULL dalam klausa WHERE
Contoh berikut menemukan semua produk yang ada NULL
di Weight
kolom . Perhatikan spasi antara IS
dan NULL
.
-- Uses AdventureWorksDW
SELECT EnglishProductName, Weight
FROM dbo.DimProduct
WHERE Weight IS NULL;