首頁 >資料庫 >mysql教程 >如何從 MySQL SELECT 語句中排除 NULL 值?

如何從 MySQL SELECT 語句中排除 NULL 值?

Susan Sarandon
Susan Sarandon原創
2025-01-15 16:37:43177瀏覽

How Can I Exclude NULL Values from MySQL SELECT Statements?

過濾掉 MySQL SELECT 查詢中的 NULL

問題:如何使用 MySQL SELECT 語句只擷取非空值?

標準 MySQL SELECT * 語句包含所有欄位,甚至包含具有 NULL 值的欄位。 若要僅擷取非空數據,請使用 IS NOT NULL 條件:

<code class="language-sql">SELECT * 
FROM your_table
WHERE YourColumn IS NOT NULL;</code>

此查詢傳回 YourColumn 不包含 NULL 的行。 MySQL 也支援空安全相等運算子的否定,儘管這不是標準 SQL:

<code class="language-sql">SELECT *
FROM your_table
WHERE NOT (YourColumn <=> NULL);</code>

處理多個欄位需要不同的策略。一種方法使用多個 SELECT 語句和 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>

這種方法單獨檢查每一列並組合結果。 然而,由於多次表掃描,它可能效率低下。

為了避免多次掃描,請考慮使用帶有交叉連接的 CASE 語句:

<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>

這將從每行的 val1val2 中選擇第一個非空值,並將其指派給 val 欄位。

以上是如何從 MySQL SELECT 語句中排除 NULL 值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn