sql - 与 Oracle 11g 中元组中的 null 进行比较

标签 sql oracle oracle11g

如何在以下查询中检查空值?维护不是问题。查询正在自动运行以检查是否进行了数据库更改。

SELECT COUNT(*) FROM MSG_TYP_LKUP
  WHERE ((MSG_TYP,NM,SUB_TYP,DIRECT,FORMAT) IN
            (
                    ('setr.005','Cancel to Fund',NULL,'OUT','SWIFT-XML'),
                    ('setr.011','Cancel to Fund',NULL,'OUT','SWIFT-XML'),
                    ('setr.013','Order to Fund',NULL,'OUT','SWIFT-XML'),
                    ('setr.014','Cancel to Fund',NULL,'OUT','SWIFT-XML'),
                    ('setr.016','Order Received','RECE','OUT','SWIFT-XML'),
                    ('setr.016','Order Acknowledgement','STNP','OUT','SWIFT-XML')
            )
     );

最佳答案

最简单的方法可能是为 NULL 插入一个新值。 .像这样的东西:

SELECT COUNT(*)
FROM MSG_TYP_LKUP
WHERE ((MSG_TYP, NM, COALESCE(SUB_TYP, '<NULL>'), DIRECT, FORMAT) IN
            (
                    ('setr.005','Cancel to Fund', '<NULL>','OUT','SWIFT-XML'),
                    ('setr.011','Cancel to Fund', '<NULL>','OUT','SWIFT-XML'),
                    ('setr.013','Order to Fund', '<NULL>','OUT','SWIFT-XML'),
                    ('setr.014','Cancel to Fund', '<NULL>','OUT','SWIFT-XML'),
                    ('setr.016','Order Received','RECE','OUT','SWIFT-XML'),
                    ('setr.016','Order Acknowledgement','STNP','OUT','SWIFT-XML')
            )
     );
我对这种方法并不感到兴奋。但是 Oracle 没有 NULL -safe 比较运算符,所以这可能是最简单的方法。

关于sql - 与 Oracle 11g 中元组中的 null 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66547920/

相关文章:

oracle - 在 Oracle 11g 数据库中使用 OpenAI API (chatgpt)

oracle - 当存在 Public.Dual 时,为什么会出现错误 "ORA-01720: grant option does not exist for ' SYS.DUAL'"?

php - 在 SQL 查询中获取唯一数据

sql - 使用多个线程更新同一个数据库会更快吗?

mysql - 一一显示具有重复 StudentId 的验证消息

sql - Oracle 服务器沙盒

java - 是否允许重新打包Oracles JDBC驱动程序?

mysql - 从一列中检索两个最高值以进行差异的排名比较

sql - 使用 TOAD 从另一个表插入的 ORACLE 未正确对齐(显示 NULL)

oracle - 如何将iso-8601类型的日期插入oracle数据库