Bagikan melalui


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.

Konvensi sintaks transact-SQL

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;