Gantikan Nilai NULL dengan Nilai Diketahui Sebelumnya dalam SQL
Dalam pangkalan data SQL, adalah perkara biasa untuk menemui jadual dengan nilai yang tiada atau NULL. Dalam senario tertentu, nilai NULL ini perlu diganti dengan nilai yang diketahui terkini daripada baris sebelumnya. Ini amat berguna apabila bekerja dengan data siri masa, di mana nilai yang tiada boleh mengganggu analisis data.
Contoh:
Pertimbangkan jadual berikut yang mewakili siri masa nombor diindeks mengikut tarikh:
date number ---- ------ 1 3 2 NULL 3 5 4 NULL 5 NULL 6 2
Kami mahu menggantikan nilai NULL dalam lajur nombor dengan nilai terkini yang diketahui daripada baris sebelumnya. Sebagai contoh, tarikh 2 hendaklah diisi dengan 3, tarikh 4 dan 5 hendaklah diisi dengan 5, dan seterusnya.
Penyelesaian Menggunakan SQL Server:
DECLARE @Table TABLE( ID INT, Val INT ) INSERT INTO @Table (ID,Val) SELECT 1, 3 INSERT INTO @Table (ID,Val) SELECT 2, NULL INSERT INTO @Table (ID,Val) SELECT 3, 5 INSERT INTO @Table (ID,Val) SELECT 4, NULL INSERT INTO @Table (ID,Val) SELECT 5, NULL INSERT INTO @Table (ID,Val) SELECT 6, 2 SELECT *, ISNULL(Val, (SELECT TOP 1 Val FROM @Table WHERE ID < t.ID AND Val IS NOT NULL ORDER BY ID DESC)) FROM @Table t
Pertanyaan ini menggunakan subkueri untuk mencari nilai bukan NULL terkini untuk setiap baris dengan nilai NULL. Fungsi ISNULL kemudian menggantikan nilai NULL dengan nilai yang dipilih. Hasilnya ialah jadual dengan nilai NULL digantikan dengan nilai yang diketahui sebelumnya.
Atas ialah kandungan terperinci Bagaimana untuk Menggantikan Nilai NULL dengan Nilai Bukan NULL Sebelumnya dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!