oracledecode空值,常⽤函数--decode的使⽤,NULL值的意思语法:
逻辑:
decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
如果 条件值与值1相=,就返回 翻译值1
如果 条件值与值2相=,就返回 翻译值2
如果 条件值与值N相=,就返回 翻译值N
说明:返回值的数据类型就是翻译值的数据类型,缺省值可以省略,省略后返回NULL
DECODE适合的数据类型:numeric types (NUMBER, BINARY_FLOAT, or BINARY_DOUBLE) or character types
限制:arch列表不能超过255个值
⽤法样例:
1.⽐较⼤⼩
lect decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较⼩值
dish
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
例如:
变量1=10,变量2=20
则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较⼩值的⽬的。
2.⼀般⽤法
SELECT product_id,
你最珍贵英文DECODE (warehou_id, 1, 'Southlake',
2, 'San Francisco',
3, 'New Jery',
4, 'Seattle',
'Non domestic')
"Location of inventory" FROM inventories
WHERE product_id < 1775;
cylinder
3.表,视图结构转化
现有⼀个商品销售表sale,表结构为:
month char(6) --⽉份
ll number(10,2) --⽉销售⾦额
现有数据为:
200001 1000
200002 1100
200003 1200到达的英文
200004 1300
200005 1400
200006 1500
200007 1600
200101 1100
200202 1200
200301 1300
想要转化为以下结构的数据:
ampere
year char(4) --年份
month1 number(10,2) --1⽉销售⾦额
month2 number(10,2) --2⽉销售⾦额
month3 number(10,2) --3⽉销售⾦额oicq是什么
month4 number(10,2) --4⽉销售⾦额
month5 number(10,2) --5⽉销售⾦额
month6 number(10,2) --6⽉销售⾦额
month7 number(10,2) --7⽉销售⾦额
month8 number(10,2) --8⽉销售⾦额
month9 number(10,2) --9⽉销售⾦额
month10 number(10,2) --10⽉销售⾦额
month11 number(10,2) --11⽉销售⾦额
month12 number(10,2) --12⽉销售⾦额
结构转化的SQL语句为:
create or replace view
v_sale(year,month1,month2,month3,month4,month5,month6,month7,month8,month9,month10,month11,month12) as
lect
substrb(month,1,4), --year
sum(decode(substrb(month,5,2),'01',ll,0)), --month1
sum(decode(substrb(month,5,2),'02',ll,0)), --month2
sum(decode(substrb(month,5,2),'03',ll,0)), --month3
sum(decode(substrb(month,5,2),'04',ll,0)), --month4
......
sum(decode(substrb(month,5,2),'12',ll,0)), --month12
====================================================================================问:什么是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> lect 1 from dual where null=null;
没有查到记录
SQL> lect 1 from dual where null='';
没有查到记录
SQL> lect 1 from dual where ''='';
改善英文
没有查到记录
SQL> lect 1 from dual where null is null;
1
---------
1
SQL> lect 1 from dual where nvl(null,0)=nvl(null,0);
1
加盟店 英文---------
1
对空值做加、减、乘、除等运算操作,结果仍为空。
小学关联词大全SQL> lect 1+null from dual;
SQL> lect 1-null from dual;
SQL> lect 1*null from dual;
SQL> lect 1/null from dual;
查询到⼀个记录.
注:这个记录就是SQL语句中的那个null
设置某些列为空值
update table1 t 列1=NULL where 列1 is not null;[注意:]查询空值记录:
SQL> lect * from hrtest1 where salary=null;
no rows lected
SQL> lect * from hrtest1 where salary is null; FIRST_NAME LAST_NAME SALARY
-------------------- ------------------------- ----------
1 2
SQL>