比如一个table中有A字段和B字段,两个字段的值可能相等、可能不等、可能都为空、可能其中一个为空
A B
valueB
以上例子是A为空字符,如果sql语句写成select * from table where A<>B 这样就是无记录返回
如果光看两条记录的话确实是不相等,请问oracle中如何写这条sql语句才能返回记录
最终目的就是要查出这两个字段不相等的记录来,从理论上分析应该是能查出来的(因为A字段和B字段确实不相等),但是在oracle里面null是未知的是不能用<>、!=等这样的表达式的 ,
select * from table where A is null and B is not null and B='valueB'
è¿éæ¯ç¨è¿ç§æ¹æ³éåºæ¥ï¼è¿å¯ä»¥ç¨nvlå½æ°å å°ç©ºå¼è®¾ä¸ºæ个å¼ï¼è¿ä¸ªå¼éè¦æ ¹æ®å ·ä½æ åµå®ï¼ä»¥ä¿è¯AåBä¸ç¸çï¼ååè¿è¡æ¯è¾ï¼select * from table where nvl(A,1)<>B
å ¶ä¸oracleä¸nullçå ·ä½ä»ç»å¯çä¸ä¸è¿ä¸ªhttp://hi.baidu.com/k_c_m/blog/item/4ed42b03a10ea0e008fa93f6.html
è¿éæ¯ç¨è¿ç§æ¹æ³éåºæ¥ï¼è¿å¯ä»¥ç¨nvlå½æ°å å°ç©ºå¼è®¾ä¸ºæ个å¼ï¼è¿ä¸ªå¼éè¦æ ¹æ®å ·ä½æ åµå®ï¼ä»¥ä¿è¯AåBä¸ç¸çï¼ååè¿è¡æ¯è¾ï¼select * from table where nvl(A,1)<>B
å ¶ä¸oracleä¸nullçå ·ä½ä»ç»å¯çä¸ä¸è¿ä¸ªhttp://hi.baidu.com/k_c_m/blog/item/4ed42b03a10ea0e008fa93f6.html
温馨提示:答案为网友推荐,仅供参考
第1个回答 2010-09-27
select * from table t , table m where t.a<>m.b
第2个回答 2010-09-27
不知道 你说的神马意思 返回记录结果就是 没有