[英]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.