网站维护需要什么,免费ai写作网站,特效网站模板,上海企业网络营销推广多少钱Oracle数据库避坑#xff1a;CASE WHEN 空字符串比较#xff0c;预期的结果与判断逻辑的实现之间存在不匹配 1、背景2、具体示例分析3、其他相同案例4、结论 1、背景
在业务开发中#xff0c;查询sql视图时#xff0c;使用CASE WHEN语句判断空字符串是否不等于column… Oracle数据库避坑CASE WHEN 空字符串比较预期的结果与判断逻辑的实现之间存在不匹配 1、背景2、具体示例分析3、其他相同案例4、结论 1、背景
在业务开发中查询sql视图时使用CASE WHEN语句判断空字符串是否不等于column时预期的结果与判断逻辑的实现之间存在不匹配。详下下方示例Sql
2、具体示例分析
‘’ ‘’ 空字符串比较结果是不等于是否出乎预料 SELECT CASE WHEN THEN 等于 ELSE 不等于 END FROM DUAL; -- 不等于’ ’ ’ ’ 空格的比较 SELECT CASE WHEN THEN 等于 ELSE 不等于 END FROM DUAL; -- 等于‘20’ ‘20’ 字符串的比较 SELECT CASE WHEN 20 20 THEN 等于 ELSE 不等于 END FROM DUAL; -- 等于‘20’ ‘’ 结果是等于是否出乎预料 SELECT CASE WHEN 20 THEN 不等于 ELSE 等于 END FROM DUAL; -- 等于‘’ ‘20’ 的比较结果是等于是否出乎预料 SELECT CASE WHEN 20 THEN 不等于 ELSE 等于 END FROM DUAL; -- 等于3、其他相同案例 SELECT * FROM table WHERE column ; -- 返回空结果集因为column列中没有值为空字符串的行 SELECT * FROM table WHERE column ! ; -- 返回空结果集因为column列中没有值为空字符串的行4、结论
在SQL中空字符串‘’与任何其他字符串包括空字符串比较都是不等于的。空字符串的比较和NULL的判空是一个类型的不能使用NULL NULL来判断可以使用IS NULL来判断。