Isnull()函数测试 (转)

转自:http://www.cnblogs.com/wghao/archive/2009/11/22/1608285.html

 

 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

 

posted @ 2009-11-23 12:28  自由泳  阅读(438)  评论(0)    收藏  举报