关于IF判断的问题 if jh is null then 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 if jh is not null then 使用is null 或 is not null 来判断记住oracle中''和null是不完全一样的:) [轉貼]NULL 使用详解问:什么是NULL?答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零。ORACLE允许任何一种数据类型的字段为空,除了以下两种情况:1、 主键字段(primary key),2、 定义时已经加了NOT NULL限制条件的字段说明:1、 等价于没有任何值、是未知数。2、 NULL与0、空字符串、空格都不同。3、 对空值做加、减、乘、除等运算操作,结果仍为空。4、 NULL的处理使用NVL函数。5、 比较时使用关键字用“is null”和“is not null”。6、 空值不能被索引,所以查询时有些符合条件的数据可能查不出来,count(*)中,用nvl(列名,0)处理后再查。7、 排序时比其他数据都大(索引默认是降序排列,小→大),所以NULL值总是排在最后。• 使用方法: • SQL> select 1 from dual where null=null;• • 没有查到记录• • SQL> select 1 from dual where null='';• • 没有查到记录• • SQL> select 1 from dual where ''=''; • • 没有查到记录• • SQL> select 1 from dual where null is null;• • 1• ---------• 1• • SQL> select 1 from dual where nvl(null,0)=nvl(null,0);• • 1• ---------• 1• • 对空值做加、减、乘、除等运算操作,结果仍为空。• SQL> select 1+null from dual;• SQL> select 1-null from dual;• SQL> select 1*null from dual;• SQL> select 1/null from dual;• • • 查询到一个记录.• • 注:这个记录就是SQL语句中的那个null• • 设置某些列为空值• update table1 set 列1=NULL where 列1 is not null;• • • 现有一个商品销售表sale,表结构为:• month char(6) --月份• sell number(10,2) --月销售金额• • create table sale (month char(6),sell number);• insert into sale values('200001',1000);• insert into sale values('200002',1100);• insert into sale values('200003',1200);• insert into sale values('200004',1300);• insert into sale values('200005',1400);• insert into sale values('200006',1500);• insert into sale values('200007',1600);• insert into sale values('200101',1100);• insert into sale values('200202',1200);• insert into sale values('200301',1300);• insert into sale values('200008',1000);• insert into sale(month) values('200009');(注意:这条记录的sell值为空)• commit;• 共输入12条记录• • SQL> select * from sale where sell like '%';• • MONTH SELL• ------ ---------• 200001 1000• 200002 1100• 200003 1200• 200004 1300• 200005 1400• 200006 1500• 200007 1600• 200101 1100• 200202 1200• 200301 1300• 200008 1000• • 查询到11记录.• • 结果说明:• 查询结果说明此SQL语句查询不出列值为NULL的字段• 此时需对字段为NULL的情况另外处理。• SQL> select * from sale where sell like '%' or sell is null;• SQL> select * from sale where nvl(sell,0) like '%';• • MONTH SELL• ------ ---------• 200001 1000• 200002 1100• 200003 1200• 200004 1300• 200005 1400• 200006 1500• 200007 1600• 200101 1100• 200202 1200• 200301 1300• 200008 1000• 200009• • 查询到12记录.• • Oracle的空值就是这么的用法,我们最好熟悉它的约定,以防查出的结果不正确 配置oracle透明网关的问题 求高人优化SQL Set DISPLAY environment variable 如何设置啊? 关于左联接两个表的问题 100 分问一个问题 从多表中查找数据插入到一个表中 一个表复制的问题. 求ansi sql99文档!!! 求助!安装了TOAD后就连接不上数据库了 郁闷!初学不知从何下手,散分 用脚本实现俩个服务器上的一个数据库表同步,在线等.谢 求一条SQL语句
记住oracle中''和null是不完全一样的:)
答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零。
ORACLE允许任何一种数据类型的字段为空,除了以下两种情况:
1、 主键字段(primary key),
2、 定义时已经加了NOT NULL限制条件的字段说明:
1、 等价于没有任何值、是未知数。
2、 NULL与0、空字符串、空格都不同。
3、 对空值做加、减、乘、除等运算操作,结果仍为空。
4、 NULL的处理使用NVL函数。
5、 比较时使用关键字用“is null”和“is not null”。
6、 空值不能被索引,所以查询时有些符合条件的数据可能查不出来,count(*)中,用nvl(列名,0)处理后再查。
7、 排序时比其他数据都大(索引默认是降序排列,小→大),所以NULL值总是排在最后。
• 使用方法:
• SQL> select 1 from dual where null=null;
•
• 没有查到记录
•
• SQL> select 1 from dual where null='';
•
• 没有查到记录
•
• SQL> select 1 from dual where ''='';
•
• 没有查到记录
•
• SQL> select 1 from dual where null is null;
•
• 1
• ---------
• 1
•
• SQL> select 1 from dual where nvl(null,0)=nvl(null,0);
•
• 1
• ---------
• 1
•
• 对空值做加、减、乘、除等运算操作,结果仍为空。
• SQL> select 1+null from dual;
• SQL> select 1-null from dual;
• SQL> select 1*null from dual;
• SQL> select 1/null from dual;
•
•
• 查询到一个记录.
•
• 注:这个记录就是SQL语句中的那个null
•
• 设置某些列为空值
• update table1 set 列1=NULL where 列1 is not null;
•
•
• 现有一个商品销售表sale,表结构为:
• month char(6) --月份
• sell number(10,2) --月销售金额
•
• create table sale (month char(6),sell number);
• insert into sale values('200001',1000);
• insert into sale values('200002',1100);
• insert into sale values('200003',1200);
• insert into sale values('200004',1300);
• insert into sale values('200005',1400);
• insert into sale values('200006',1500);
• insert into sale values('200007',1600);
• insert into sale values('200101',1100);
• insert into sale values('200202',1200);
• insert into sale values('200301',1300);
• insert into sale values('200008',1000);
• insert into sale(month) values('200009');(注意:这条记录的sell值为空)
• commit;
• 共输入12条记录
•
• SQL> select * from sale where sell like '%';
•
• MONTH SELL
• ------ ---------
• 200001 1000
• 200002 1100
• 200003 1200
• 200004 1300
• 200005 1400
• 200006 1500
• 200007 1600
• 200101 1100
• 200202 1200
• 200301 1300
• 200008 1000
•
• 查询到11记录.
•
• 结果说明:
• 查询结果说明此SQL语句查询不出列值为NULL的字段
• 此时需对字段为NULL的情况另外处理。
• SQL> select * from sale where sell like '%' or sell is null;
• SQL> select * from sale where nvl(sell,0) like '%';
•
• MONTH SELL
• ------ ---------
• 200001 1000
• 200002 1100
• 200003 1200
• 200004 1300
• 200005 1400
• 200006 1500
• 200007 1600
• 200101 1100
• 200202 1200
• 200301 1300
• 200008 1000
• 200009
•
• 查询到12记录.
•
• Oracle的空值就是这么的用法,我们最好熟悉它的约定,以防查出的结果不正确