SQLServer 中判断字段、变量是否为NULL或空字符

一、字段判断

(1)是否为空

select * from department where leader is NULL
select * from department where leader is not NULL

(2)是否为空字符‘’

select * from department where leader=''

select * from department where leader!=''
select * from department where leader<>''

二、变量判断

(1)是否为空

declare @r varchar(50)='abc'
	if @r is null
	begin
	  set @r='暂无数据'
	end 
	else if @r is not null
	begin
	  set @r='数据为:'+ @r
	end
select @r

------------- begin 和 end 不写也是阔以的,就是写上会显得规范些---------------

declare @r varchar(50)=NULL
	if @r is null
	  set @r='暂无数据'
	else if @r is not null
	  set @r='数据为:'+ @r
select @r

(2)是否为空字符‘’

declare @r varchar(50)='324'
	if @r = ''
	  set @r='暂无数据'
	else if @r != ''
	  set @r='数据为:'+ @r
select @r

--------------------------------

declare @r varchar(50)='bbb'
	if LEN(@r) = 0
	  set @r='暂无数据'
	else if LEN(@r) != 0
	  set @r='数据为:'+ @r
select @r

### 如何在 SQL 中检查字符串是否为空 NULL #### 使用 `IS NULL` `IS NOT NULL` 为了验证变量字段是否为 `NULL`,可以采用如下方式: 对于变量而言,可以通过条件语句来实现这一功能。例如,在 T-SQL (SQL Server) 下面的语法用于检测名为 @VariableName 的变量是否为 `NULL`[^1]。 ```sql IF (@VariableName IS NULL) BEGIN -- 执行某些操作 END; ``` 当涉及到表中的列时,则可以在查询中直接应用相同的逻辑。比如要找出某列所有等于 `NULL` 的记录,可编写这样的 SELECT 语句: ```sql SELECT * FROM TableName WHERE ColumnName IS NULL; ``` #### 处理空字符串 (`''`) 有时除了关心 `NULL` 值外,还需要考虑那些实际上存在但是长度为零即所谓的 "空串" 者仅包含空白字符的情况。针对这种情况,应该扩展之前的查询以同时处理这两种情形。下面的例子展示了如何做到这一点: ```sql SELECT * FROM TableName WHERE COALESCE(NULLIF(LTRIM(RTRIM(ColumnName)), ''), 'Default') = 'Default'; ``` 这里使用了多个函数组合起来达到目的: - `LTRIM()` `RTRIM()` 分别去除左侧右侧多余的空格; - `NULLIF(x, y)` 如果两个参数相同则返回 `NULL` 否则返回第一个参数 x; - `COALESCE(a, b)` 返回列表里第一个非 `NULL` 的表达式的值;如果都为 `NULL` 就会得到最右边那个默认值。 因此上述代码片段能够有效地识别并筛选出真正意义上的 “空” 字段——无论是严格意义下的 `NULL` 还是形式上的空字符串[^4]。 #### 替换空字符串为 `NULL` 另外一种常见需求是在读取数据之前就将所有的空字符串转换成 `NULL` 来简化后续的数据分析工作。这可以通过修改表结构定义者利用查询过程中的计算完成。前者涉及到了 DDL 操作,而后者则是通过 SQL 表达式动态变换。具体来说就是像这样写一条简单的 SELECT 查询[^3]: ```sql SELECT IF(ColumnName='', NULL, ColumnName) AS NewColumnName FROM TableName; ``` 此命令会在结果集中创建一个新的虚拟列 `NewColumnName` ,它把原始列里的每一个空字符串替换成 `NULL` 。当然也可以反过来做同样的事情—即将 `NULL` 转化为空白串其他任何指定的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值