• 描述SQL 提供的各类转换函数• 使用TO_CHAR、TO_NUMBER和TO_DATE转换函数• 在SELECT语句中应用条件表达式
- 隐式和显式数据类型转换 http://www.linuxidc.com/Linux/2013-10/91525.htm
- TO_CHAR、TO_DATE、TO_NUMBER函数 http://www.linuxidc.com/Linux/2013-10/91660.htm
- 嵌套函数 http://www.linuxidc.com/Linux/2013-10/91604.htm
- 常规函数 http://www.linuxidc.com/Linux/2013-10/91661.htm
下列函数可用于任何数据类型,且适合使用空值的场合:• NVL (expr1, expr2)• NVL2 (expr1, expr2, expr3)• NULLIF (expr1, expr2)• COALESCE (expr1, expr2, ..., exprn)
• 使你可以在SQL 语句中使用IF-THEN-ELSE逻辑。• 使用下面两种方法:– CASE表达式– DECODE函数 在SQL 语句中,用于执行条件处理(IF-THEN-ELSE逻辑)的两种方法是CASE表达式和DECODE函数。注:CASE表达式符合ANSI SQL。而DECODE函数是Oracle 专用的语法。
具有与IF-THEN-ELSE语句相同的功效,可简化条件查询:CASE expr WHEN comparison_expr1 THEN return_expr1[WHEN comparison_expr2 THEN return_expr2WHEN comparison_exprn THEN return_exprnELSE else_expr]END CASE表达式使你可以在SQL 语句中使用IF-THEN-ELSE逻辑,而无需调用任何过程。在简单的CASE表达式中,Oracle Server 会搜索其expr等于comparison_expr的第一对WHEN ... THEN,然后返回return_expr。如果没有满足此条件的WHEN ...THEN对,并且存在一个ELSE子句,则Oracle Server 将返回else_expr。否则,OracleServer 会返回空值。你不能为所有的return_expr和else_expr指定文字值ULL。表达式expr和comparison_expr必须具有相同的数据类型,可以是CHAR、VARCHAR2、NCHAR或NVARCHAR2。所有返回值(return_expr) 必须具有相同的数据类型。
具有与IF-THEN-ELSE语句相同的功效,可简化条件查询:
hr@TEST0924> SELECT last_name, job_id, salary,2 CASE job_id WHEN "IT_PROG" THEN 1.10*salary 3 WHEN "ST_CLERK" THEN 1.15*salary4 WHEN "SA_REP" THEN 1.20*salary5 ELSE salary END "REVISED_SALARY"6 FROM employees; LAST_NAME JOB_ID SALARY REVISED_SALARY------------------------- ---------- ---------- --------------OConnell SH_CLERK 2600 2600Grant SH_CLERK 2600 2600Whalen AD_ASST 4400 4400Hartstein MK_MAN 13000 13000 示例中的SQL 语句用于解码JOB_ID的值。如果JOB_ID为IT_PROG,则薪金增加10%;如果JOB_ID为ST_CLERK,则薪金增加15%;如果JOB_ID为SA_REP,则薪金增加20%。对于所有其它职务角色,不增加薪金。可以使用DECODE函数编写同样的语句。以下代码是一个搜索CASE表达式示例。在搜索CASE表达式中,搜索从左到右进行,直到找到列出的条件,然后它会返回相应的返回表达式。如果找不到满足的条件,但存在一个ELSE子句,则返回ELSE子句中的返回表达式,其它情况则返回NULL。
hr@TEST0924> SELECT last_name,salary, 2 (CASE WHEN salary<5000 THEN "Low" 3 WHEN salary<10000 THEN "Medium" 4 WHEN salary<20000 THEN "Good" 5 ELSE "Excellent" 6 END) qualified_salary 7 FROM employees; LAST_NAME SALARY QUALIFIED------------------------- ---------- ---------OConnell 2600 LowFay 6000 MediumMavris 6500 MediumHiggins 12008 GoodKing 24000 Excellent具有与CASE表达式或IF-THEN-ELSE语句相同的功效,可简化条件查询:DECODE(col|expression, search1, result1[, search2, result2,...,][, default])DECODE函数用于对表达式进行解码,其方式与在各种语言中使用的IF-THEN-ELSE逻辑类似。DECODE函数在将表达式与每个搜索值进行比较之后对表达式进行解码。如果表达式与搜索值相同,则返回结果。如果省略了默认值,并且搜索值不与任何结果值相匹配,则会返回一个空值。
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2013-10/91662p2.htm
Oracle DB NVL、NVL2、NULLIF、COALESCE函数Oracle DB 组函数相关资讯 Oracle函数 Oracle转换函数 Oracle条件表达式
- Oracle字符串函数总结 (06月20日)
- Oracle lag()与lead() 函数 (12/01/2015 20:41:24)
- Oracle ascii函数 (07/26/2015 08:46:01)
| - Oracle使用简单函数 (06月09日)
- REGEXP_SUBSTR函数的整理 (08/20/2015 20:41:01)
- Oracle dump函数 (07/26/2015 08:40:01)
|
本文评论 查看全部评论 (0)