如何在不使用IsNULL
的情況下編寫以下語句?如何在不使用SQL Server中的IsNull的情況下比較空值
Case
When (IsNull(Email_Ind, '') != 'N'
then 'e'
else 'n'
end
這是否得到正確的結果?
Case
When Email_Ind != 'N' and Email_Ind is not null
then 'e'
else 'n'
end
如何在不使用IsNULL
的情況下編寫以下語句?如何在不使用SQL Server中的IsNull的情況下比較空值
Case
When (IsNull(Email_Ind, '') != 'N'
then 'e'
else 'n'
end
這是否得到正確的結果?
Case
When Email_Ind != 'N' and Email_Ind is not null
then 'e'
else 'n'
end
您的案例陳述看起來不錯。這只是一個關於如何編寫它的偏好問題。對我來說,這是更容易理解的,但我不確定所有情況。
Case When Email_Ind != 'N' or Email_Ind is null then 'e' else 'n' end
使用EXCEPT and INTERSECT對於這樣的事情:
select case when (select Email_Ind intersect select 'Y') = 1 then 'E' else 'N' end
至於建議由@ypercubeᵀᴹ,這也將工作(並可能是陳述查詢更多的語義的方式):
select case when exists (select Email_Ind intersect select 'Y') then 'E' else 'N' end
@ypercubeᵀᴹ對不起,我忘了'= 1'。 – Kittoes0124
聰明,但任何遇到此代碼的人都必須仔細思考它,然後才意識到它的目的只是!='N'或OR爲空。這就像在代碼中留下一個小小的rubiks立方體,開發人員必須解決這個問題,才能理解目的。 – AaronLS
@AaronLS在這個世界上,如何優雅地比較'nulls'聰明或魔方?是一種慣用的T-SQL方法?我認爲一個不懂T-SQL的人可能仍然會消化這個版本,因爲它比它們可以分解一個IsNull(
你爲什麼不喜歡ISNULL?這可能會傷害SQL Server的感受:) – scsimon
哈哈..我總是使用幾列加密,它不喜歡IsNull – HadoopAddict
其實我認爲它很好,只是很難閱讀。我的回答與你的沒有什麼不同,只是不同而已。 – scsimon