我有3列:加入列,如果其中有一個是空
col1, int
col2, char(10)
col3, char(11)
其中只有一個在他們的任何值,也可以是其中一方。
我想檢查哪些列是空的,並添加一個,其中有一個值的第四列:col4。
我使用T-SQL
我有3列:加入列,如果其中有一個是空
col1, int
col2, char(10)
col3, char(11)
其中只有一個在他們的任何值,也可以是其中一方。
我想檢查哪些列是空的,並添加一個,其中有一個值的第四列:col4。
我使用T-SQL
SELECT COALESCE(CONVERT(CHAR(11), col1), CONVERT(CHAR(11), col2), col3)
FROM yourtable;
它的工作。 thansk。 – uba2012
你可以使用IS NULL
比較返回一個true或false爲每列和COALESCE()
找到所有列中的第一個非空值
SELECT
col1 IS NULL AS col1_null,
col2 IS NULL AS col2_null,
col3 IS NULL AS col3_null,
COALESCE(cast(col1 as char(11)), cast(col2 as char(11)), cast(col3 as char(11)) AS first_not_null_val
FROM table
在COALESCE()
函數中提供的列的順序很重要,但由於這三個中只有一個不爲空,所以它總是會返回那個。
注意:您需要將您的列轉換爲COALESCE()
的相同數據類型。由於您的上限爲char(11)
,因爲它涵蓋了char(10)
和int
類型,我已經提出了這個問題。我想你想保留空間,這就是爲什麼你首先使用char
。
不要存儲那樣的數據。 – jarlh
你不說明你正在使用什麼數據庫。但請查看'Coalesce'聲明。這應該爲你做。 – bilpor
Col4的數據類型? – jarlh