簡體   English   中英

MySql查詢在選擇中用空字符串替換NULL

[英]MySql Query Replace NULL with Empty String in Select

如何用空字符串替換選擇中的 NULL 值? 輸出“NULL”值看起來不太專業。

這是非常不尋常的,根據我的語法,我希望它能夠工作。 我希望有一個解釋為什么它沒有。

select CASE prereq WHEN (prereq IS NULL) THEN " " ELSE prereq end from test;

原始表的外觀、我想要的以及實際打印的內容的示例:

original     wanted      what actually prints
--------     ------      ---------------------
value1       value1      
NULL                     NULL
value2       value2      
NULL                     NULL

正如您所看到的,它與我想要的相反,因此我嘗試將 IS NULL 翻轉為 IS NOT NULL,當然這並沒有解決它。 我也嘗試交換 when case 的位置,但沒有用。

似乎下面給出的 3 個解決方案都可以完成任務。

select if(prereq IS NULL ," ",prereq ) from test
select IFNULL(prereq,"") from test
select coalesce(prereq, '') from test

如果您真的必須輸出包括 NULL 在內的每個值:

select IFNULL(prereq,"") from test
SELECT COALESCE(prereq, '') FROM test

Coalesce 將返回從左到右傳遞給它的第一個非空參數。 如果所有的參數都是空的,它會返回空,但我們在那里強制一個空字符串,所以不會返回空值。

另請注意,標准 SQL 支持COALESCE運算符。 這不是IFNULL的情況。 所以使用前者是一個很好的做法。 此外,請記住 COALESCE 支持 2 個以上的參數,它會迭代它們,直到找到非空的巧合。

試試下面;

  select if(prereq IS NULL ," ",prereq ) from test

其中一些內置函數應該可以工作:

合並(值,...)

返回列表中的第一個非 NULL 值,如果沒有非 NULL 值,則返回 NULL。

一片空白

測試值是否為 NULL。

IFNULL (expr1,expr2)

如果 expr1 不為 NULL,則 IFNULL() 返回 expr1; 否則返回 expr2。

select IFNULL(`prereq`,'') as ColumnName FROM test

此查詢正在選擇“prereq”值,如果其中任何一個值為空,它會根據您的喜好顯示一個空字符串 因此,它顯示所有值,但空值顯示為空白

原始形式幾乎是完美的,您只需在CASE之后省略prereq

SELECT
  CASE
    WHEN prereq IS NULL THEN ' '
    ELSE prereq
  END AS prereq
FROM test;

嘗試COALESCE 它返回第一個非 NULL 值。

SELECT COALESCE(`prereq`, ' ') FROM `test`

試試這個,這也應該擺脫那些空行:

SELECT prereq FROM test WHERE prereq IS NOT NULL;

我在數據庫的非必填字段中有空值(NULL 作為默認值)。 它們不會導致值“null”出現在網頁中。 然而,當通過網頁輸入表單創建數據時,值“null”被放置到位。 這是因為 JavaScript 在通過 AJAX 和 jQuery 提交數據時取 null 並將其轉錄為字符串“null”。 確保這不是基本問題,因為簡單地執行上述操作只是對實際問題的創可貼。 我還實施了上述解決方案 IFNULL(...) 作為雙重措施。 謝謝。

UPDATE your_table set your_field="" where your_field is null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM