由于近期的一点点工作,学习了一点点Oracle的东西,仅记录一点:
decode函数和sign函数配合在sql语句中做判断。
decode() 语法:
decode(expression, compare1,value1, compare2, value2, .... ,defaultValue)
意思很简单,如果expression和compareN相等,则返回valueN,如果一个都不相等,则返回defaultValue.
一个最最简单的使用就是为了防止除数等于0,比如
SELECT a/b FROM table;
如果b=0,则会发生 ORA-01476: 除数为 0 错误,如果这样写:
SELECT decode(b,0,0,a/b) FROM table;
如果b=0,则返回0,否则返回a/b。
很显然,如果单单使用decode(),只能做相当于switch-case的功能,那么比如我想判断小于某数的情况呢?
sign(a-b), sign根据a-b和0做比较,大于,等于,小于分别返回1,0,-1,举个例子,我想找所有小于10的b,如果大于10的统统返回100,可以这样写:
SELECT decode(sign(b-10),-1,b,100) FROM table;
以上2点仅自娱自乐,很久没有更新了。。。
oracle decode函数的使用
最新推荐文章于 2024-09-15 21:58:44 发布