sql 自带的 isnull(值,默认值) 函数 只适用于 值为 null 的情况,
如果值为 '' 空字符串(不为null ), 就失效了...
自己动手写一个简单的SQL函数,来实现支持 NULL和 ' ' 空字符串 这两种情况的 判断
创建 标量值函数 如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION F_ISNULL --自定义函数名称
(
@parameter varchar(100),--参数1
@default varchar(100)--参数2(如果参数1为NULL或者为''空字符串,则返回: 参数2)
)
returns varchar(100)--返回值的类型
AS
BEGIN
declare @return varchar(100);
set @return = (
select
case
when @parameter is null then @default --参数1为null,返回参数2
when LTRIM(RTRIM(@parameter)) = '' then @default --参数1为''空字符串,返回参数2
when LTRIM(RTRIM(@parameter)) != '' then @parameter --参数1有值,返回参数1
else @default end --返回参数2
)
return @return --返回值
END
GO
调用方式如下:
[dbo].F_ISNULL(sysdate,getdate()) --如果sysdate的值为null或者'',则用getdate()来取代
调用自定义函数,必须写上: [dbo].
测试一下:
select [dbo].[F_ISNULL](' ',NEWID())
union all
select [dbo].[F_ISNULL](null,NEWID())
union all
select [dbo].[F_ISNULL](getdate(),NEWID())