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
Lepaskan: 2025-01-03 02:45:38
asal
633 orang telah melayarinya

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan