Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggantikan NULL dengan Nilai Bukan NULL Sebelumnya dalam SQL?

Bagaimana untuk Menggantikan NULL dengan Nilai Bukan NULL Sebelumnya dalam SQL?

Susan Sarandon
Susan Sarandonasal
2025-01-03 02:45:38635semak imbas

How to Replace NULLs with Previous Non-NULL Values in SQL?

Mengambil Nilai Yang Hilang dalam SQL: Menggantikan NULL dengan Nilai Diketahui Sebelumnya

Jadual data selalunya mengandungi nilai yang tiada yang diwakili oleh NULL. Untuk mengoptimumkan analisis dan mengekalkan integriti data, adalah penting untuk menggantikan NULL dengan nilai yang bermakna. Satu strategi biasa ialah menggantikan setiap NULL dengan nilai bukan NULL terakhir yang diketahui dalam baris sebelumnya.

Untuk mencapai ini dalam SQL Server, pertimbangkan penyelesaian berikut:

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 berfungsi seperti berikut:

  • Pertanyaan dalaman mendapatkan semula nilai bukan NULL terakhir untuk setiap baris dengan menggunakan subkueri dengan klausa ORDER BY.
  • Pertanyaan luar bergabung dengan jadual dengan dirinya sendiri menggunakan lajur ID.
  • Fungsi ISNULL digunakan untuk menyemak NULL. Jika lajur Val baris semasa ialah NULL, ia digantikan dengan nilai yang diambil oleh subkueri.

Atas ialah kandungan terperinci Bagaimana untuk Menggantikan NULL dengan Nilai Bukan NULL Sebelumnya dalam SQL?. 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