Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何反转使用空值的布尔逻辑语句(将“选择”条件更改为“放弃”条件)_Java_Null_Boolean_Logic_Boolean Logic - Fatal编程技术网

Java 如何反转使用空值的布尔逻辑语句(将“选择”条件更改为“放弃”条件)

Java 如何反转使用空值的布尔逻辑语句(将“选择”条件更改为“放弃”条件),java,null,boolean,logic,boolean-logic,Java,Null,Boolean,Logic,Boolean Logic,短版: 我需要转换布尔表达式: (味精包含“A”)或(味精包含“B”)或(味精包含“C”)或(味精为空) 与之相反,由于使用了“IS NULL”,我感到很困惑 上面的逻辑反映了我要选择的记录。不幸的是,我只能指定要丢弃的记录 详细信息: 我正在使用一个解析记录的应用程序。它允许用户根据布尔表达式过滤出(丢弃)记录。(对于那些关心的人:Arcsight智能连接器——如果相关的话,它的核心似乎在使用JRE。) 虽然这通常是足够的,但在某些情况下,我只能表达我想要选择的内容。(而且只有那些记录)。遗憾

短版:

我需要转换布尔表达式:

(味精包含“A”)或(味精包含“B”)或(味精包含“C”)或(味精为空)

与之相反,由于使用了“IS NULL”,我感到很困惑

上面的逻辑反映了我要选择的记录。不幸的是,我只能指定要丢弃的记录

详细信息:

我正在使用一个解析记录的应用程序。它允许用户根据布尔表达式过滤出(丢弃)记录。(对于那些关心的人:Arcsight智能连接器——如果相关的话,它的核心似乎在使用JRE。)

虽然这通常是足够的,但在某些情况下,我只能表达我想要选择的内容。(而且只有那些记录)。遗憾的是,实用程序中没有这样做的规定,即“过滤”。我没有办法改变这个

在大多数情况下,我学到了一个简单的技巧:编写我的“选择”逻辑,然后通过将所有内容封装在括号中来反转它,交换和OR,反之亦然,然后用NOT前置。(20年前,我只上了3天的符号逻辑课,所以我用蛮力把它赶了出来,到目前为止,它似乎是有效的。)然而,这只在图中没有空值的情况下才有效

“EQ”(相等)“NEQ”(不相等)、“CONTAINS”、“notcontains”、“not”和“isnotnull”是表达式的有效语法

除了上面的限制之外,应该清楚的是,我无法知道消息的所有可能值

我经历了很多尝试和错误。列出附件可能没有多大价值。但我要提到几点,因为我知道空值通常会很麻烦

===================


非常感谢大家的帮助。作为记录,如上所述,应用程序下面的引擎是某种形式的JRE(如果它引入了和特殊处理空值)

原始表达式:

(味精包含“A”)或(味精包含“B”)或(味精包含“C”)或 (消息为空)

所需的反方向:

不((味精包含“A”)或(味精包含“B”)或(味精包含 “C”)或(msg为空)

DeMorgan定理的应用:

NOT(味精包含“A”)和NOT(味精包含“B”)以及NOT(味精 包含“C”)而不包含(消息为空)

使用可用的原语:

(味精不含“A”)和(味精不含“B”)以及(味精不含 包含“C”)和(消息不为空)

可选地,使用交换连词定律,首先移动NOT NULL测试:

(msg不为空)和(msg不包含“A”)以及(msg不包含 “B”)和(味精不含“C”)


(如果在给定NULL first参数时NOT CONTAINS失败,或者如果msg经常为NULL,并且系统避免执行其余NOT CONTAINS检查,则首先移动NOT NULL测试可能会有所帮助。)

经过这么多的实验后,我直接发送到查询的最终版本,该版本似乎已经完成了操作。