Menapis NULL dalam Pertanyaan PILIHAN MySQL
Soalan: Bagaimanakah saya boleh mendapatkan hanya nilai bukan nol menggunakan pernyataan MySQL SELECT?
PenyataanStandard MySQL SELECT *
termasuk semua lajur, malah yang mempunyai nilai NULL
. Untuk mendapatkan semula data bukan nol sahaja, gunakan syarat IS NOT NULL
:
<code class="language-sql">SELECT * FROM your_table WHERE YourColumn IS NOT NULL;</code>
Pertanyaan ini mengembalikan baris yang YourColumn
tidak mengandungi NULL
. MySQL juga menyokong penafian pengendali kesaksamaan null-safe, walaupun ini bukan SQL standard:
<code class="language-sql">SELECT * FROM your_table WHERE NOT (YourColumn <=> NULL);</code>
Mengendalikan berbilang lajur memerlukan strategi yang berbeza. Satu kaedah menggunakan berbilang SELECT
pernyataan dan UNION ALL
:
<code class="language-sql">SELECT val1 AS val FROM your_table WHERE val1 IS NOT NULL UNION ALL SELECT val2 FROM your_table WHERE val2 IS NOT NULL;</code>
Pendekatan ini menyemak setiap lajur secara individu dan menggabungkan hasilnya. Walau bagaimanapun, ia boleh menjadi tidak cekap disebabkan oleh beberapa imbasan jadual.
Untuk mengelakkan berbilang imbasan, pertimbangkan CASE
pernyataan dengan sambung silang:
<code class="language-sql">SELECT CASE idx WHEN 1 THEN val1 WHEN 2 THEN val2 END AS val FROM your_table CROSS JOIN (SELECT 1 AS idx UNION ALL SELECT 2) t HAVING val IS NOT NULL;</code>
Ini memilih nilai bukan nol pertama daripada val1
dan val2
untuk setiap baris dan menetapkannya pada lajur val
.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengecualikan Nilai NULL daripada Pernyataan SELECT MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!