簡體   English   中英

如何在select語句中檢查列值是否為null

[英]How to check a column values is null or not in select statement

我是SQL Server的新手,我想在select語句中驗證列值是NULL還是空。

select語句是:

SELECT COM_TYPE, COM_IN_CHARGE_POSITION 
FROM TABLE_01 

如果COM_TYPE值為null或為空,我想將COM_TYPE_OTHERS值作為COM_TYPE ,其方式與COM_IN_CHARGE_POSITION相同。

只是如果COM_TYPE和COM_IN_CHARGE_POSITION為空或空,我想從其他兩列中獲取值。

任何人都可以幫我解決這個問題嗎?

我假設空白為NULL 在這種情況下,您只需要coalesce()

select coalesce(COM_TYPE, COM_TYPE_OTHERS, COM_IN_CHARGE_POSITION, COM_IN_CHARGE_POSITION_OTHERS) as effective_COM_TYPE

coalesce()函數接受第一個非NULL參數。 如果值可以是空字符串或除NULL之外還有空格的字符串,則建議使用case表達式。

COALESCE函數可以檢查哪一列首先是非NULL,但如果要檢查,則為null或為空,您可以嘗試使用CASE WHEN

SELECT  CASE WHEN COM_TYPE IS NULL OR COM_TYPE = '' THEN COM_TYPE_OTHERS 
             ELSE COM_TYPE END AS COM_TYPE,
        CASE WHEN COM_IN_CHARGE_POSITION IS NULL OR COM_IN_CHARGE_POSITION = '' THEN COM_IN_CHARGE_POSITION_OTHERS 
             ELSE COM_IN_CHARGE_POSITION END AS COM_IN_CHARGE_POSITION,
FROM TABLE_01 

您可以使用COALESCE()ISNULL() OR CASE WHEN語句

SELECT COALESCE( COM_TYPE, COM_TYPE_OTHERS ) AS COM_TYPE,
       COALESCE (COM_IN_CHARGE_POSITION , COM_IN_CHARGE_POSITION_OTHERS) AS COM_IN_CHARGE_POSITION 
FROM   TABLE_01

檢查null或empty的最簡單方法是使用ISNULLNULLIF

SELECT ISNULL(NULLIF(COM_TYPE, ''), COM_TYPE_OTHERS)
FROM TABLE_01

您也可以使用COALESCE,但它不檢查空字符串(僅為null),因此您仍然必須使用NULLIF

另請注意, ISNULLCOALESCE快,即使差異可以忽略不計。

暫無
暫無

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

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