当我准备在这里回答我们其中一位同伴的问题时,我遇到了一个奇怪的情况,至少对我而言.原来的问题在这里:Pivot Table Omitting Rows that Have Null values

我已修改查询以使用max而不是group_concat,以便在所有数据库中显示“问题”.

SELECT

id,

max(case when colID = 1 then value else '' end) AS fn,

max(case when colID = 2 then value else '' end) AS ln,

max(case when colID = 3 then value else '' end) AS jt

FROM tbl

GROUP BY id

该查询的结果是这样的:

ID FN LN JT

1 Sampo Kallinen Office Manager

2 Jakko Salovaara Vice President

3 (null) Foo No First Name

用户要求过滤ID为3的行,因为该字段值为null.

很明显,仅需要做的就是在该查询上添加WHERE值IS NOT NULL约束以实现用户期望的结果.它不会工作.

因此,我开始在其他数据库上对其进行测试,以查看会发生什么情况(WHERE CLAUSE查询)

SELECT

id,

max(case when colID = 1 then value else '' end) AS fn,

max(case when colID = 2 then value else '' end) AS ln,

max(case when colID = 3 then value else '' end) AS jt

FROM tbl

WHERE value is not null

GROUP BY id

令我惊讶的是结果是一样的,没有一个奏效.

然后,我尝试了同一查询的不同版本:

SELECT * FROM (

SELECT

id,

max(case when colID = 1 then value else '' end) AS fn,

max(case when colID = 2 then value else '' end) AS ln,

max(case when colID = 3 then value else '' end) AS jt

FROM tbl

GROUP BY id

) T

WHERE fn IS NOT NULL

AND ln IS NOT NULL

AND jt IS NOT NULL

我可以使其在所有数据库上运行的唯一方法是使用此查询:

SELECT

id,

max(case when colID = 1 then value else '' end) AS fn,

max(case when colID = 2 then value else '' end) AS ln,

max(case when colID = 3 then value else '' end) AS jt

FROM tbl

WHERE NOT EXISTS (SELECT * FROM tbl b WHERE tbl.id=b.id AND value IS NULL)

GROUP BY id

所以我问:

除了Oracle上的特定情况外,所有其他DB似乎都忽略了IS NOT NULL过滤器,这是怎么回事?

oracle mysql is null_MySql,Postgres,Oracle和SQLServer忽略IS NOT NULL过滤...相关推荐

  1. Oracle MySQL社区版与Oracle MySQL企业版特征对比

    转载来源:https://fourcornerstone.com/oracle-solutions/oracle-mysql-community-vs-oracle-mysql-enterprise/ ...

  2. oracle mysql 乱码_解决Oracle数据库中文乱码

    查询当前Oracle所用编码 在服务器上查看数据库服务器字符集 select userenv('language') from dual; USERENV('LANGUAGE') ---------- ...

  3. oracle mysql 效率_关于oracle 数据库效率的优化

    最近项目快要快要结束了,我们最终还是要面对我们一直存在的问题,就是数据库查询编码的问题,但是通过各个方面观察我们发现数据库仅仅200w条数据查询议一天的数据也就仅仅不到两万条数据没结果查了将近两分钟, ...

  4. c#下各种数据库操作的封装!(支持ACCESS,SQLSERVER,DB2,ORACLE,MYSQL)(二)

    使用静态工厂模式,通过传入枚举型参数,动态创建访问实例 实现模式上采用基本实现接口,派生类继承基类的虚函数,从而实现代码的耦合较低,有很好的扩展性. publicenum DBType ...{   ...

  5. mysql和oracle课程,Oracle MySQL 管理实战应用培训

    培训天数: 3天 培训费用: 认证费用: 1500元 培训概述 Oracle MySQL数据库管理员课程是为DBA和想了解安装和配置Oracle MySQL服务器,设置复制和安全性,执行数据库备份和性 ...

  6. [20年12月]Docker数据库镜像安装(MySQL、Redis、Oracle 12c、MS SQLServer、Postgres、MongoDB)

    前言: 该文章特别适用于自我学习和小规模使用的个人开发者 文章保证提供保姆级操作步骤,Ctrl+C加Ctrl+V可用 但你最好了解Linux的基础知识和操作,最好懂一点Docker的语法命令 当然,你 ...

  7. ORACLE迁移到DM/达梦 Mysql迁移到DM/达梦 SQLSERVER迁移到DM/达梦 超级有用参考文档!!!

    ORACLE迁移到DM/达梦 Mysql迁移到DM/达梦 SQLSERVER迁移到DM/达梦 超级有用参考文档!!! 在达梦的论坛上,有专门的手记写了这三种数据库迁移到达梦!!超级好用!!!!!!!! ...

  8. mysql数据库迁移对比_数据库的迁移总结及区别比较(Oracle,MySQL,SQLServer)

    徐亮,2011-4-1 导言:最近的数据超市项目需要从SQLServer迁移到MySql.在之前并没有很多数据库迁移方面的经验,所以也不知道迁移需要花费多久,都要做什么工作.通过几天的工作,项目已经顺 ...

  9. c#下各种数据库操作的封装!(支持ACCESS,SQLSERVER,DB2,ORACLE,MYSQL)(四)

    整个例子的完整代码如下,VS2008下编译测试通过,本人已通过它实现N个项目,欢迎大家评测,谢谢指教 publicenum DBType ...{        Access,        SQL, ...

最新文章

  1. jQuery 核心 - noConflict() 方法,jQuery 文档操作 - detach() 方法
  2. 03_4_this关键字
  3. 队列与栈结构的相同点与不同点
  4. Abp连接多个数据源
  5. mysql 压测结果_用mysqlslap压测mysql
  6. Mysql最常用的十大函数
  7. 微信小程序视频学习教程
  8. 电子元件-发光二极管
  9. golang html转成pdf,使用_go-wkhtmltopdf_将html转pdf
  10. 计算机小喇叭找不到,如何解决电脑右下角的小喇叭不见了的问题
  11. 自己动手编译NodeMCU固件
  12. 路由器的连接——图解
  13. 单因素模糊评价matlab,模糊综合评判matlab源程序
  14. 学Web的第二十一天
  15. 马尔科夫链Markov以及空间Markov Matlab代码
  16. 比赛之前的最后一点点总结
  17. 链化未来共识协议详解(下)
  18. ubuntu 下查看caj文件
  19. 项目 cg day04
  20. C语言输出任意位数小数

热门文章

  1. 有没有同声传译的软件推荐?这几个同声传译app分享给你
  2. “卷积”其实没那么难以理解
  3. 第一财经专访张晨:图技术赋能金融领域进入全新阶段
  4. python3实例车代码_python3 爬取汽车之家所有车型数据操作步骤(更新版)
  5. kettle bat文件启动带参数
  6. 好书推荐《人性的弱点》
  7. java 画图油漆桶_Flood Fill (洪水填充、泛洪填充、油漆桶)算法Java循环实现(BFS方式,非递归)...
  8. 湖北电信运用大数据分析开展主动服务
  9. 及刻大数据:深圳地铁10号线客流分析,华为周边最熙攘
  10. 删除xcode organize 中的app