我寫SQL Server過程像下面如果SQL Server條件NULL檢查
if @name_belongs_to != 'John'
begin
--doing some operation
end
如果名字不是「約翰」,這是工作的罰款。但是,如果它是NULL,它不會執行,如果部分。
如何處理?
我寫SQL Server過程像下面如果SQL Server條件NULL檢查
if @name_belongs_to != 'John'
begin
--doing some operation
end
如果名字不是「約翰」,這是工作的罰款。但是,如果它是NULL,它不會執行,如果部分。
如何處理?
一種選擇是對名稱中使用COALESECE()
:
if coalesce(@name_belongs_to, '') != 'John'
begin
--doing some operation
end
使用等於運算你不能比較的SQL Server(和大多數其他RDBMS)NULL
值。相反,您需要使用IS NULL
或IS NOT NULL
。使用COALESCE()
這裏是一個技巧,它將NULL
的值轉換爲字符串,以便與!=
進行比較。
只使用不爲空
if @name_belongs_to != 'John' or @name_belongs_to is not null
begin
--doing some operation
end
這也是正確的:
if @name_belongs_to != 'John' OR @name_belongs_to IS NULL
begin
--doing some operation
end
這MSDN article介紹如何三值邏輯的作品。
默認情況下,任何比較爲null返回false
空= null是假
空= '值' 是假
,所以你需要添加
OR @name_belongs_to IS NULL
我在下面用聲明來解決我的問題,
if isnull(@name_belongs_to,'') != 'John'
這是這是三種重要邏輯的症狀,在這裏閱讀以獲取更多信息; https://www.simple-talk.com/sql/learn-sql-server/sql-and-the-snare-of-three-valued-logic/ –