如何判断既不为null也不为空字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何判断既不为null也不为空字符串相关的知识,希望对你有一定的参考价值。

参考技术A String.IsNullorEmpty(string )
C#

Mybatis中关于字符串字段的判断不为空且不为null

在开发过程中我们一般遇到的是对入参的判断不为空且不为null,例:

<if test="status != null and status != ''">
    and  rf.status = #{status}
</if>

本次说的是对查询字段的判断,例:

-- a为用户,b为角色,c为组织,该sql模拟查询已绑定组织和角色的用户
SELECT
	a.*, b.role_type,
	c.`name`
FROM
	user a
LEFT JOIN role b ON a.role_id = b.id
LEFT JOIN group c ON a.group_id = c.id
WHERE
	a.`status` = '0'
AND a.role_id <> ''
AND a.role_id IS NOT NULL
AND a.group_id <> ''
AND a.group_id IS NOT NULL

看起来是不是很臃肿,现在我们来对它进行简化

​
-- a为用户,b为角色,c为组织,该sql模拟查询已绑定组织和角色的用户
SELECT
	a.*, b.role_type,
	c.`name`
FROM
	user a
LEFT JOIN role b ON a.role_id = b.id
LEFT JOIN group c ON a.group_id = c.id
WHERE
	a.`status` = '0'
--AND a.role_id <> ''
--AND a.role_id IS NOT NULL
--AND a.group_id <> ''
--AND a.group_id IS NOT NULL

AND IFNULL(a.role_id,'')<>''
AND IFNULL(a.group_id ,'')<>''

--当然,这个是mysql的语法函数,sqlServer类似的函数是isnull(value1,value2),
Oracle类似的函数是nvl(value1,value2)  ,用法大同小异
​

还有更简单的:

​
​
-- a为用户,b为角色,c为组织,该sql模拟查询已绑定组织和角色的用户
SELECT
	a.*, b.role_type,
	c.`name`
FROM
	user a
LEFT JOIN role b ON a.role_id = b.id
LEFT JOIN group c ON a.group_id = c.id
WHERE
	a.`status` = '0'
--AND a.role_id <> ''
--AND a.role_id IS NOT NULL
--AND a.group_id <> ''
--AND a.group_id IS NOT NULL

--AND IFNULL(a.role_id,'')<>''
--AND IFNULL(a.group_id ,'')<>''

AND a.role_id > ''
AND a.group_id > ''
​

​

是不是很简单粗暴呢,多多支持哈!

以上是关于如何判断既不为null也不为空字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何判断 Tasker 变量是未设置、空字符串还是非空字符串

Mongoose:唯一字段,如果它不为 null 或空字符串 [重复]

C#判断字符串为空有哪几种方法

Java判断空字符串和对象是否为null

Java判断空字符串和对象是否为null

oracle存空字符串怎么会变成null