我遇到了一个简单的查询。我想要的是获得除一个以外的所有行。请查看以下数据。
COL_A COL_B
B D
B (null)
B C
G D
G (null)
G C
除了 B C 之外,我想获取所有行。请看sqlfiddle
我试图通过和col_A <> 'B' and col_B <> 'C'
来获取行,但它并未执行操作。非常感谢您的帮助。
由于
答案 0 :(得分:2)
一种可能的解决方案。也许不是最优雅的:
select req_for col_A, doc_typ col_B
from a
where (req_for IS NULL OR doc_typ IS NULL)
OR (req_for,doc_typ)
NOT IN (select 'B','C' from dual);
答案 1 :(得分:1)
尝试
entities.stream().collect(...)
或
where not(col_A = 'B' and col_B = 'C')
答案 2 :(得分:1)
您的问题是NULL
值。以下是在Oracle中表达这一点的简明方法:
where (col_A || col_B) <> 'BC'
Oracle将NULL
值视为字符串连接中的空字符串。
答案 3 :(得分:0)
啊,否定。总是造成麻烦。使用这样的SQL查询,您必须考虑要包含的内容,而不是您想要排除的内容。
如果执行where nvl(doc_typ,'NA') <> 'C' and nvl(req_for, 'NA') <> 'B';
,则不包括doc_type为C的任何行,并且不包含req_for为B的任何行。
你想做where nvl(doc_typ,'NA') <> 'C' or nvl(req_for, 'NA') <> 'B';
。这样,只要其req_for也不是B,仍将包含C的doc_type。
答案 4 :(得分:0)
你能不能只删除不需要的行:
select req_for col_A, doc_typ col_B from a
where NOT (NVL(doc_typ,'NA') = 'C' AND nvl(req_for,'NA') = 'B');
答案 5 :(得分:0)
getResources().getStringArray(R.array.main_drawer_entries);