Isnull()函数测试
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
@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
@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
@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
@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"
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
Set @y=N'123456'
Print Isnull(Null,@y)+N'1' --说明当check_expression为Null,返回的是replacement_value的数据类型,所以返回@y的int类型:"123457"
Go
(完.)