ISNULL和NULLIF函数

1、数据表

创建表语句

CREATE TABLE [dbo].[t_user] (
  [USER_ID] nvarchar(32) COLLATE Chinese_PRC_CI_AS  NOT NULL,
  [USER_NAME] nvarchar(32) COLLATE Chinese_PRC_CI_AS  NULL,
  [USER_PASSWORD] nvarchar(32) COLLATE Chinese_PRC_CI_AS  NULL,
  [USER_EMAIL] nvarchar(32) COLLATE Chinese_PRC_CI_AS  NULL,
  CONSTRAINT [PK__t_user__F3BEEBFF7F60ED59] PRIMARY KEY CLUSTERED ([USER_ID])
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)  
ON [PRIMARY]
)  
ON [PRIMARY]
GO

ALTER TABLE [dbo].[t_user] SET (LOCK_ESCALATION = TABLE)
GO

CREATE NONCLUSTERED INDEX [IDX_NAME]
ON [dbo].[t_user] (
  [USER_NAME] ASC
)

插入数据

INSERT INTO [dbo].[t_user]([USER_ID], [USER_NAME], [USER_PASSWORD], [USER_EMAIL]) VALUES (N'1', N'唐三', N'tangsan', N'tangsan@qq.com');
INSERT INTO [dbo].[t_user]([USER_ID], [USER_NAME], [USER_PASSWORD], [USER_EMAIL]) VALUES (N'2', N'小舞', N'xiaowu', N'xiaowu@qq.com');
INSERT INTO [dbo].[t_user]([USER_ID], [USER_NAME], [USER_PASSWORD], [USER_EMAIL]) VALUES (N'3', N'大明', N'daming', N'');
INSERT INTO [dbo].[t_user]([USER_ID], [USER_NAME], [USER_PASSWORD], [USER_EMAIL]) VALUES (N'4', N'二明', N'erming', NULL);

查看数据

在这里插入图片描述

1、ISNULL

使用指定的替换值替换NULL

语法:ISNULL ( expression1 , expression2 )

注释:如果 expression1不为NULL,则返回expression1的值;否则返回expression2的值。

示例

SELECT
	USER_ID,
	USER_NAME,
	USER_PASSWORD,
	ISNULL(USER_EMAIL,'这个值为NULL') AS USER_EMAIL
FROM
	t_user

结果

在这里插入图片描述

2、NULLIF

判断两个值是否相等,相等返回NULL,不相等返回第一个值

语法:ISNULL ( expression1 , expression2 )

注释:如果expression1和expression2相等则返回NULL;否则返回expression1

示例

SELECT
	USER_ID,
	-- 跟唐四比较,不相等则返回前者
	NULLIF(USER_NAME, '唐四') AS USER_NAME_1,
	-- 跟唐三比较,相等则返回NULL
	NULLIF(USER_NAME, '唐三') AS USER_NAME_2,
	USER_PASSWORD,
	USER_EMAIL
FROM
	t_user

结果

在这里插入图片描述

3、ISNULL与NULLIF的联合使用

把查出唐三改名为唐四

SELECT
	USER_ID,
	USER_NAME,
	-- 使用NULLIF跟唐三比较,相等则返回NULL;再判断是否为NULL,是则返回唐四
	ISNULL(NULLIF(USER_NAME, '唐三'),'唐四') AS USER_NAME_1,
	USER_PASSWORD,
	USER_EMAIL
FROM
	t_user

结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只小熊猫呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值