发现一个奇怪的问题啊!
有一个tab数据如下啊table name: tabAid(pk) filed1(varchar)
1 1
2
3 2
4 null然后执行sqlselect * from tabA where filed1 <> '12345'第二条记录竟然没有返回,只返回下面的~难道“空” 等于’12345‘?
id(pk) filed1(varchar)
1 1
3 2
4 null
有一个tab数据如下啊table name: tabAid(pk) filed1(varchar)
1 1
2
3 2
4 null然后执行sqlselect * from tabA where filed1 <> '12345'第二条记录竟然没有返回,只返回下面的~难道“空” 等于’12345‘?
id(pk) filed1(varchar)
1 1
3 2
4 null
解决方案 »
- oracle的过程中for循环优化运行速度
- OCIObjectFree 释放不了OCIObjectNew申请的对象,内存没减少
- 求sql : 如何把in 里面的(‘123,456,789’)变成它能识别的类型(‘123’,‘456’,‘789’)?
- 如何将oracle8i的数据(.DMP文件)导入到oracle10g中
- Oracle10数据库中为啥空字符串总自动变成个null值?
- 请问日期如何加上个月份数
- 求一个SQL语句
- OCI开发:怎样把C++结构体数组传递给存储过程
- 困惑多时的问题,怎样写这个统计的SQL语句?
- 数据库不能打开(在线等)
- 请个问题,客户端怎么连接Oracle数据库
- 问个“分组”的问题
select * from tabA where filed1 <> '12345'结果是:
id(pk) filed1(varchar)
1 1
3 2
4 null我不太明白为啥啊?
NULL与任何值比较或做数学运算,除非使用IS NULL或IS NOT NULL,否则都为UNKNOWN,当然查不出来啦,你改为
select * from tabA where filed1 <> '12345' OR filed1 IS NULL;
而你第4条null是字符值填的'null'吧
filed1 的值为null 不在is null的条件内