簡體   English   中英

在Select語句中替換NULL和空字符串

[英]Replacing NULL and empty string within Select statement

我有一個列可以有NULL或空格(即'' )值。 我想用'UNKNOWN'類的有效值替換這兩個值。 我發現的各種解決方案建議修改表格本身的值。 但是,在這種情況下,這不是一個選項,因為數據庫是針對第三方應用程序開發和/或打補得很差(實際上我認為我的羅威納犬可以做得更好)。 我擔心修改基礎數據可能會導致應用程序融入吸煙洞。

我嘗試過以下命令的變體:

COALESCE(Address.COUNTRY, 'United States') -- Won't replace empty string as it is not NULL
REPLACE(Address.COUNTRY, '', 'United States') -- Doesn't replace empty string
ISNULL(Address.COUNTRY, 'United States') -- Works for NULL but not empty string

我知道我可以使用CASE語句,但我希望有一個更優雅/更有效的解決方案。

當我說我已經找到解決我的具體問題並且沒有找到答案時,你將不得不相信我。 但是,如果我忽略了某些東西,請向我展示一條明亮的道路。

試試這個

COALESCE(NULLIF(Address.COUNTRY,''), 'United States')

聽起來你想要一個視圖而不是改變實際的表數據。

Coalesce(NullIf(rtrim(Address.Country),''),'United States')

如果它實際上是一個空字符串(或空字符串),那么這將強制您的列為null,然后coalesce將使用null。

另一種方法是: - 建議只使用一個表達式 -

case when address.country <> '' then address.country
else 'United States'
end as country

注意: <>運算符檢查null的結果將返回false
並且如文檔所述: NULLIF等同於搜索的CASE表達式
COALESCE表達式是CASE表達式的語法快捷方式
因此,這些的組合使用兩次case表達。

暫無
暫無

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

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