Use Test
Go
/*Isnull()函數測試 2009-11-22
ISNULL ( check_expression , replacement_value )
*/
1。 資料類型一樣,但長度不一樣
Declare @x nvarchar(5),
@y nvarchar(50)
Set @y=N'123456'
Print Isnull(@x,@y) --@y就會被截取,返回"12345"
Go
2.資料類型不一樣(nvarchar -> int)
Declare @x int,
@y nvarchar(50)
Set @y=N'123456'
Print Isnull(@x,@y)+N'1' --這裡先轉換成int資料類型,再加"1",所以返回"123457"
Go
3.資料類型不一樣(int -> nvarchar)
Declare @x nvarchar(50),
@y int
Set @y=N'123456'
Print Isnull(@x,@y)+N'1' --這裡先轉換成nvarchar資料類型,再加"1",所以返回"1234561"
Go
4.資料類型不一樣(nvarchar -> uniqueidentifier)
Declare @x uniqueidentifier,
@y nvarchar(50)
Set @y=N'123456'
Print Isnull(@x,@y) --收到錯誤的提示:"將字串轉換為 uniqueidentifier 時失敗"。
Go
5. 來個有意思的測試(nvarchar -- > Null)
Declare @y nvarchar(50)
Set @y=N'123456'
Print Isnull(Null,@y)+N'1' --說明當check_expression為Null,返回的是replacement_value的資料類型,所以返回@y的nvarchar類型:"1234561"
6. 來個有意思的測試(int -- > Null) --再驗證第5個例子
Declare @y int
Set @y=N'123456'
Print Isnull(Null,@y)+N'1' --說明當check_expression為Null,返回的是replacement_value的資料類型,所以返回@y的int類型:"123457"
Go
(完.)