您的位置:首页 > 数据库 > Oracle

Oracle通用函数和条件函数

2018-01-20 10:08 197 查看
--语法: nullif(表达式1,表达式2)
select nullif(2+2,4) from dual;--返回空
select nullif('ABC','ABC') from dual;--返回空
select nullif('你好','你好') from dual;--返回空
--由上可知,表达式1和表达式2相等,返回值为空

select nullif(2+3,4) from dual;--返回5
select nullif('ABC','efg') from dual;--返回abc
select nullif('你好','嗨') from dual;--返回你好
--由上可知,表达式1和表达式2不相等,则返回表达式1中的值

select nullif(null,4) from dual;--报错,数据类型不一致
select nullif(4,null) from dual;--返回4
--表达式1和表达式2应该是相同数据类型或能隐含转换成相同数据类型,
--表达式1不能用字符null
select nullif(null,null) from dual;

--语法:coalesce (e1, e2...en)

select coalesce(4) from dual;--报错,参数不够
select coalesce(4,5) from dual;--返回4
select coalesce(4,5,6) from dual;--返回4
select coalesce(null,5,6) from dual;--返回5
select coalesce(null,null,6) from dual;--返回6
select coalesce(null,null,null) from dual;--返回null
--由上可知,必须指定最少两个参数,不然会报错
--如果所有的参数都是null,则返回null。

--语法:decode(表达式,(参数列表)x1,y1,...,xn,yn,default值)
--语法:decode(表达式,(参数列表)x1,y1,...,xn,yn)

--基本形式 decode(表达式1,(成对出现的参数)表达式2,返回值2,表达式3,返回值3,匹配时单独剩下一个,当做默认值)
select decode(4,5,4) from dual;--当表达式1不等于表达式2,返回空(没有默认值)
select decode(4,4,5) from dual;--当表达式1等于表达式2,返回返回值2,返回5
select decode(4,4,5,6) from dual;--返回5
select decode(4,5,4,6) from dual;--返回6
select decode(4,5,4,4,8,6) from dual;--返回8
--由上可知,表达式只与参数列表左边(xn)作匹配,
--匹配成功,则返回参数列表右边(yn)的值
--匹配失败,则返回后面的default值
--如果后面没有定义default值,则返回null。

--Case xxx when  A  then  somethingA  when  B then  somethingB  else   somethingE end

create table chenxulin(
name varchar2(10),
sex varchar2(4)
);

select name,sex from chenxulin;
--像switch
SELECT NAME,
sex,
(CASE sex
WHEN '1' THEN
'男'
WHEN '2' THEN
'女'
ELSE
'嬲'
END)
FROM chenxulin;
--像if elseif else
SELECT ename,
sal,
(CASE
WHEN sal>=2000 THEN
'土豪'
WHEN sal>=1000 THEN
'屌丝'
ELSE
'乞丐'
END) 财产
FROM emp;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle