根據我的理解,IsNull函數檢查第一個值,如果其爲空或空白,則返回下一個值。SQL服務器中的ISNULL行爲
SELECT ISNULL(1,getdate())
但上述語句給出錯誤。任何人都可以幫助突出原因嗎?
根據我的理解,IsNull函數檢查第一個值,如果其爲空或空白,則返回下一個值。SQL服務器中的ISNULL行爲
SELECT ISNULL(1,getdate())
但上述語句給出錯誤。任何人都可以幫助突出原因嗎?
從數據類型的日期時間爲INT隱式轉換是不允許的,使所述第一值炭
SELECT ISNULL('1',getdate())
順便說一句,只是注意ISNULL不ANSI是proprietery和只接受2個參數,COALESCE接受很多
DECLARE @1 INT,@2 int, @3 INT, @4 int
SELECT @4 = 6
SELECT COALESCE(@1,@2,@3,@4)
下面這種說法是不正確
IsNull函數檢查第一個值如果爲空或空白,則返回下一個值。
它不關心空白
來看,這種
SELECT ISNULL('','A') -- Blank is returned not A
SELECT ISNULL(NULL,'A') -- A is returned because the first value is NULL
ISNULL和COALESCE之間的另一個區別是,ISNULL將返回相同的長度作爲第一個參數
運行此
DECLARE @c CHAR(3)
SELECT ISNULL(@c,'not available') -- not
SELECT COALESCE(@c,'not available') --not available
感謝您的信息,但ISNULL是否檢查第二個參數的數據類型,即使它發現第一個值不爲空 –
順便說一句:'coalesce(1,getdate())'確實工作,因爲它轉向另一個方向根據優先級不按第1個參數。 –
關於coalesce和isnull之間的區別的一些細節:http://sqlwithmanoj.wordpress.com/2010/12/23/isnull-vs-coalesce/ – alun
我想你是試圖用一個日期替換整數。試試這個SELECT ISNULL(1,2)也許吧。
你可以讓它做到這一點,但我真的不會推薦它。這是超級不清楚別人在看這個東西它試圖做的事:
SELECT case when not 1 is null then 1 else getdate() end
什麼錯誤是它給? – Mat
這是什麼期望的結果? –