OracleDecode()函数使用技巧分享
DECODE函数是ORACLEPL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能。DECODE有什么用途呢?
先构造一个例子,假设我们想给智星职员加工资,其标准是:工资在8000元以下的将加20%;工资在8000元以上的加15%,通常的做法是,先选出记录中的工资字段值?selectsalaryintovar-salaryfromemployee,然后对变量var-salary用if-then-else或choosecase之类的流控制语句进行判断。
如果用DECODE函数,那么我们就可以把这些流控制语句省略,通过SQL语句就可以直接完成。如下:selectdecode(sign(salary-8000),1,salary*1.15,-1,salary*1.2,salaryfromemployee是不是很简洁?
DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。初看一下,DECODE只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代value,是可以使DECODE函数具备大于、小于或等于功能。
IF条件=值1THEN
RETURN(翻译值1)
ELSIF条件=值2THEN
RETURN(翻译值2)
......
ELSIF条件=值nTHEN
RETURN(翻译值n)
ELSE
RETURN(缺省值)
ENDIF
selectid,decode(sign(score-85),1,"优秀",0,"优秀",-1,
decode(sign(score-70),1,"良好",0,"良好",-1,
decode(sign(score-60),1,"及格",0,"及格",-1,"不及格")))
fromstudent;
decode(expression,search_1,result_1)
decode(expression,search_1,result_1,search_2,result_2)
decode(expression,search_1,result_1,search_2,result_2,....,search_n,result_n)
decode(expression,search_1,result_1,search_2,result_2,default)
decode(expression,search_1,result_1,search_2,result_2,....,search_n,result_n,default)
以下是一个简单测试,用于说明Decode函数的用法:
SQL>createtabletasselectusername,default_tablespace,lock_datefromdba_users;
---------------------------------------------------------------------
SYS SYSTEM
SYSTEM SYSTEM
OUTLN SYSTEM
CSMIG SYSTEM
SCOTT SYSTEM
EYGLE USERS
DBSNMP SYSTEM
WMSYS SYSTEM 20-OCT-04
SQL>selectusername,decode(lock_date,null,"unlocked","locked")statusfromt;
--------------------------------------
SYS unlocked
SYSTEM unlocked
OUTLN unlocked
CSMIG unlocked
SCOTT unlocked
EYGLE unlocked
DBSNMP unlocked
WMSYS locked
--------------------------------------
SYS unlocked
SYSTEM unlocked
OUTLN unlocked
CSMIG unlocked
SCOTT unlocked
EYGLE unlocked
DBSNMP unlocked
WMSYS
相关文章
- PyCharm使用教程 — 9、PyCharm中的搜索技巧(文件/函数/内容)「建议收藏」
- python字符串的使用方法_python字符串常用函数
- sql技巧之开窗函数rank()的使用
- JS小技巧,如何使用内置函数对数组内容进行排序
- 的使用初学者必须掌握的Oracle数据库函数使用技巧(oracle数据库函数)
- Oracle 数据库技巧:如何使用截取函数实现精准月份数据的提取?(oracle截取月份)
- 教你使用Oracle中的Split函数,轻松处理数据拆分问题(oracle中split)
- MySQL中使用随机数函数实现随机数据排序(mysql随机数函数)
- MySQL中使用MOD函数获取余数(mysqlmod)
- 函数SQL Server中计算位数的函数使用技巧(sqlserver中位数)
- MySQL中使用conv函数快速转换数据格式(mysql中conv函数)
- MySQL函数的使用方法与调用技巧分享(mysql中函数调用)
- 函数Oracle中使用长度函数获取字符串长度的技巧(oracle中长度)
- MySQLping函数的使用方法和注意事项(mysql_ping函数)
- MySQL中的IF函数 – 数据库中条件判断使用技巧(mysql z中的if)
- Oracle余数函数使用技巧(oracle 余数用法)
- Oracle中使用常见函数的技巧(oracle中的常用函数)
- mysql求和函数使用示例