Oracle中根据字段进行判断

时间:2025-03-09 15:00:35

1、NVL(a, b):若a为null或’’,则返回b的值,a有值则返回a的值
例:
select nvl(null, ‘无值哦╮(╯▽╰)╭’) from dual; --无值哦╮(╯▽╰)╭
select nvl(’’, ‘无值哦╮(╯▽╰)╭’) from dual; --无值哦╮(╯▽╰)╭
select nvl(‘有值’, ‘无值哦╮(╯▽╰)╭’) from dual; --有值

2、NVL2(a, b, c): 若a为null或’’,则返回c的值,a有值则返回b的值
例:
select nvl2(null, ‘有值耶(^-^)V’, ‘无值哦╮(╯▽╰)╭’) from dual; --无值哦╮(╯▽╰)╭
select nvl2(’’, ‘有值耶(^-^)V’, ‘无值哦╮(╯▽╰)╭’) from dual; --无值哦╮(╯▽╰)╭
select nvl2(‘123’, ‘有值耶(^-^)V’, ‘无值哦╮(╯▽╰)╭’) from dual; --有值耶(^-^)V

3、NULLIF(a, b):相同类型时,若a和b相同,则返回null, ab不同则返回a;若a,b不同类型则会报错
例:
select NULLIF(1, 1) from dual;–null
select NULLIF(1, 2) from dual; --1
select NULLIF(’’, null) from dual;–null

4、sign(a): 若a为正值则返回1; a为0则返回0; a为负值则返回 -1
例:select sign(-10), sign(0), sign(10) from dual; – -1 0 1

5、decode(字段, 条件1, 表达式1, 条件2, 表达式2, … 条件n, 达式n, 缺省值)
例:select decode(2, 1, ‘one’, 2, ‘two’, ‘other’) from dual; – two

6、 case when的使用
第一种: case 字段
when 条件1 then 表达式1
when 条件2 then 表达式2
else 表达式n
end
例:select case 2 when 1 then ‘one’ when 2 then ‘two’ else ‘other’ end as result from dual;
– two

另一种:
case when 条件1 then 表达式1
when 条件2 then 表达式2
else 表达式n
end
例: select case when 1 = 1 then ‘true’ else ‘false’ end from dual; – true

case when 还可以放在条件中:
例:select 8 from dual where 1 = (case 1 when 1 then 1 else 0 end); – 8