当前位置: 首页 > java >正文

HANA语法随手记:<> ‘NULL‘值问题

每种数据库对应NULL值的处理都不相同,最近有遇见这个语法,脑子老是记不清楚,干脆写个笔记记一下吧。

SQL:

SELECT B.TEST1

FROM A LEFT JOIN B ON A. T1 =  B.T1

WHERE B.TEST1 <> 'A'

这种情况下 如果关联不到B表我是不想排除掉的,只是排除关联到并且B.TEST1 不等于A 的数据,

但是HANA返回的结果会排除掉没关联到B的数据,原因是因为:

  当你添加`WHERE 右表.某列 <> 'A'` 条件时:

   - 如果右表没有匹配的行(即`LEFT JOIN`后右表数据为`NULL`),则`右表.某列`的值是`NULL`

   - `WHERE 右表.某列 <> 'A'` 条件在遇到`NULL`时,比较结果会是`UNKNOWN`(SQL的三值逻辑之一)

   - `WHERE` 条件会过滤掉计算结果不为`TRUE`的行(即`UNKNOWN`的行会被排除)

**结论:`NULL`的行会被过滤掉** 

- 在`LEFT JOIN`后右表某列为`NULL`的行

- 在`WHERE 右表.某列 <> 'A` 条件下,`NULL`值会导致比较结果为`UNKNOWN`

- `WHERE` 条件会排除这些`UNKNOWN`的行,因此它们不会被包含在最终结果中

解决办法 

SELECT B.TEST1

FROM A LEFT JOIN B ON A. T1 =  B.T1

WHERE IFNUULL(B.TEST1,'') <> 'A'

**实际效果:`NULL`的行会被`WHERE`条件排除** 

所以,如果你在`LEFT JOIN`后添加了`WHERE 右表.某列 <> 'WG'`的条件,那么右表关联列为`NULL`的行会被排除在结果集之外。

http://www.xdnf.cn/news/16263.html

相关文章:

  • 七层网络的瑞士军刀 - 服务网格 Istio 流量管理
  • HTTP响应状态码详解
  • 快速入门Socket编程——封装一套便捷的Socket编程——Reactor
  • 关于自定义域和 GitHub Pages(Windows)
  • 基于springboot的候鸟监测管理系统
  • pycharm安装教程-PyCharm2023安装详细步骤【MAC版】【安装包自取】
  • Logstash 多表增量同步 MySQL 到 Elasticsearch:支持逻辑删除与热加载,Docker 快速部署实战
  • 【Android】桌面小组件开发
  • RAG面试内容整理-3. 向量检索原理与常用库(ANN、FAISS、Milvus 等)
  • 三坐标和激光跟踪仪的区别
  • 【源力觉醒 创作者计划】ERNIE-4.5-VL-28B-A3B 模型详解:部署、测试与 Qwen3 深度对比测评
  • OmoFun网页版官网入口,动漫共和国最新地址|官方下载地|打不开
  • Cacti命令执行漏洞分析(CVE-2022-46169)
  • qt5静态版本对应的pcre编译
  • 数据标注与AI赋能出版行业数智化转型|光环云张鹏出席“智启未来”沙龙并作主题分享
  • 输电线路观冰精灵在线监测装置:科技赋能电网安全的新利器
  • 「源力觉醒 创作者计划」文心一言VSDeepSeek
  • 从数据脱敏到SHAP解释:用Streamlit+XGBoost构建可复现的川崎病诊断系统
  • 用SSD实现AI RAG性能升级,铠侠发布AiSAQ新版本
  • Ubuntu22 上,用C++ gSoap 创建一个简单的webservice
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-24,(知识点:二极管基础知识,单向导电性)
  • 【09】C#入门到精通——C# 结构体对齐 与 常用数据 对应关系
  • CF每日5题(1500-1600)
  • node.js中的path模块
  • 技嘉z370主板开启vtx
  • windows11通过wsl安装Ubuntu到D盘,安装docker及宝塔面板
  • 【STM32】FreeRTOS 任务的删除(三)
  • 《 java 随想录》| 数组
  • Java学习日记_廖万忠
  • 支持OCR和AI解释的Web PDF阅读器:解决大文档阅读难题