Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengisi Nilai NULL dalam SQL Menggunakan Nilai Bukan NULL Terkini?

Bagaimana untuk Mengisi Nilai NULL dalam SQL Menggunakan Nilai Bukan NULL Terkini?

DDD
DDDasal
2025-01-05 16:52:39291semak imbas

How to Fill NULL Values in SQL Using the Most Recent Non-NULL Value?

Cara Menggantikan Nilai NULL Berturut-turut dengan Nilai Diketahui Sebelumnya dalam SQL

Dalam pengurusan pangkalan data, situasi mungkin timbul di mana nilai NULL memerlukan untuk digantikan dengan data yang bermakna. Satu senario biasa ialah apabila data tiada dalam lajur dan perlu disimpulkan daripada baris bersebelahan.

Pertimbangkan jadual dengan dua lajur, 'tarikh' dan 'nombor':

date   number
----   ------
1      3
2      NULL
3      5
4      NULL
5      NULL
6      2

Matlamatnya adalah untuk menggantikan nilai NULL dalam lajur 'nombor' dengan nilai bukan NULL terkini daripada lajur 'tarikh'. Ini menunjukkan bahawa jika 'nombor' untuk tarikh 2 adalah NULL, ia harus digantikan dengan 3 (nilai yang diketahui sebelumnya). Begitu juga, nilai NULL pada tarikh 4 dan 5 hendaklah digantikan dengan 5.

Dalam SQL Server, pertanyaan berikut boleh digunakan untuk mencapai ini:

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 menggunakan subkueri untuk mencari nilai bukan NULL pertama dalam lajur 'Val' untuk setiap baris dengan nilai NULL. Fungsi ISNULL kemudiannya digunakan untuk menggantikan nilai NULL dengan nilai bukan NULL yang dipilih.

Hasil pertanyaan adalah seperti berikut:

date   number
----   ------
1      3
2      3
3      5
4      5
5      5
6      2

Nilai NULL dalam 'nombor ' lajur telah berjaya digantikan dengan nilai bukan NULL terkini daripada lajur 'tarikh'. Teknik ini boleh berguna untuk mengisi data yang hilang dan memastikan integriti data dalam pelbagai senario pangkalan data.

Atas ialah kandungan terperinci Bagaimana untuk Mengisi Nilai NULL dalam SQL Menggunakan Nilai Bukan NULL Terkini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn