版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、转换函数 隐 性 显 性 数据类型转换转换函数 隐 性 显 隐式数据类型转换Oracle 自动完成下列转换:VARCHAR2 or CHAR源数据类型目标数据类型VARCHAR2 or CHARNUMBERDATENUMBERDATEVARCHAR2VARCHAR2varchar2numberdate隐式数据类型转换Oracle 自动完成下列转换:VARCHA显式数据类型转换NUMBERCHARACTERTO_CHARTO_NUMBERDATETO_CHARTO_DATE显式数据类型转换NUMBERCHARACTERTO_CHARTO_CHAR函数对日期的转换格式:必须包含在单引号中而且大小写
2、敏感。可以包含任意的有效的日期格式。日期之间用逗号隔开。TO_CHAR(date, format_model)SELECT TO_CHAR(sysdate,yyyy-mm-dd hh:mi:ss) FROM dual;TO_CHAR函数对日期的转换格式:TO_CHAR(dateYYYY日期格式的元素YEARMMMONTHDYDAY2004TWO THOUSAND AND FOUR02MONMONDAYJULYMONJULDD02YYYY日期格式的元素YEARMMMONTHDYDAY200日期格式的元素时间格式使用双引号向日期中添加字符HH24:MI:SS AM15:45:32 PMDD of
3、MONTH12 of OCTOBER日期格式的元素时间格式HH24:MI:SS AM15:45TO_CHAR 函数对日期的转换SELECT last_name, TO_CHAR(hire_date, DD Month YYYY) AS HIREDATEFROM employees;select employee_id,last_name,hire_datefrom employeeswhere to_char(hire_date,yyyy-mm-dd) = 1987-09-17TO_CHAR 函数对日期的转换SELECT last_naTO_DATE 函数对字符的转换 使用 TO_DATE 函
4、数将字符转换成数字:TO_DATE(char, format_model)使用 TO_DATE :TO_DATE(2012年10月29日 08:10:21,yyyy“年”mm”月”dd“日”hh:mi:ss)From dual练习:返回hire_date 为 */*/*的员工信息,使用显示日期表达TO_DATE 函数对字符的转换 使用 TO_DATE 函数TO_CHAR函数对数字的转换下面是在TO_CHAR 函数中经常使用的几种格式:TO_CHAR(number, format_model)90$L.,数字零美元符本地货币符号小数点千位符TO_CHAR函数对数字的转换下面是在TO_CHAR 函
5、数中SELECT TO_CHAR(salary, $99,999.00) SALARYFROM employeesWHERE last_name = Ernst;TO_CHAR函数对数字的转换SELECT TO_CHAR(salary, $99,99TO_NUMBER 函数对字符的转换 使用 TO_NUMBER 函数将字符转换成日期:TO_NUMBER(char, format_model)使用 TO_NUMBER :TO_NUMBER(¥1,234,567,890.00,L999,999,999,999.99)from dualTO_NUMBER 函数对字符的转换 使用 TO_NUMBE通用
6、函数这些函数适用于任何数据类型,同时也适用于空值:NVL (expr1, expr2)NVL2 (expr1, expr2, expr3)NULLIF (expr1, expr2)COALESCE (expr1, expr2, ., exprn)通用函数这些函数适用于任何数据类型,同时也适用于空值:NVL 函数将空值转换成一个已知的值:可以使用的数据类型有日期、字符、数字。函数的一般形式:NVL(commission_pct,0)NVL(hire_date,01-JAN-97)NVL(job_id,No Job Yet)练习1:求公司员工的年薪(含commission_pct)练习2:输出la
7、st_name,department_id,当department_id为null时,显示没有部门。NVL 函数将空值转换成一个已知的值:练习1:求公司员工的年SELECT last_name, salary, NVL(commission_pct, 0), (salary*12) + (salary*12*NVL(commission_pct, 0) AN_SALFROM employees;使用NVL函数1212SELECT last_name, salary, NVL(SELECT last_name, salary, commission_pct, NVL2(commission_pc
8、t, SAL+COMM, SAL) incomeFROM employees WHERE department_id IN (50, 80);使用 NVL2 函数1212NVL2 (expr1, expr2, expr3) : expr1不为NULL,返回expr2;为NULL,返回expr3。exp1 != null ? exp2 : exp3练习:查询员工的奖金率,若为空,返回0.01,若不为空,返回实际奖金率+0.015SELECT last_name, salary, comSELECT first_name, LENGTH(first_name) expr1, last_name,
9、LENGTH(last_name) expr2, NULLIF(LENGTH(first_name), LENGTH(last_name) resultFROM employees;使用 NULLIF 函数123123NULLIF (expr1, expr2) : 相等返回NULL,不等返回expr1 SELECT first_name, LENGTH(firs使用 COALESCE 函数COALESCE 与 NVL 相比的优点在于 COALESCE 可以同时处理交替的多个值。如果第一个表达式为空,则返回下一个表达式,对其他的参数进行COALESCE 。使用 COALESCE 函数COALES
10、CE 与 NVL 相SELECT last_name, COALESCE(commission_pct, salary, 10) commFROM employeesORDER BY commission_pct;使用 COALESCE 函数SELECT last_name,使用 COALESCE条件表达式在 SQL 语句中使用IF-THEN-ELSE 逻辑使用两种方法:CASE 表达式DECODE 函数条件表达式在 SQL 语句中使用IF-THEN-ELSE 逻CASE 表达式在需要使用 IF-THEN-ELSE 逻辑时:CASE expr WHEN comparison_expr1 THE
11、N return_expr1 WHEN comparison_expr2 THEN return_expr2 WHEN comparison_exprn THEN return_exprn ELSE else_exprEND练习:查询部门号为 10, 20, 30 的员工信息, 若部门号为 10, 则打印其工资的 1.1 倍, 20 号部门, 则打印其工资的 1.2 倍, 30 号部门打印其工资的 1.3 倍数CASE 表达式在需要使用 IF-THEN-ELSE 逻辑时SELECT last_name, job_id, salary, CASE job_id WHEN IT_PROG THEN
12、 1.10*salary WHEN ST_CLERK THEN 1.15*salary WHEN SA_REP THEN 1.20*salary ELSE salary END REVISED_SALARYFROM employees;CASE 表达式下面是使用case表达式的一个例子:SELECT last_name, job_id, salaDECODE 函数在需要使用 IF-THEN-ELSE 逻辑时:DECODE(col|expression, search1, result1 , , search2, result2,., , default)DECODE 函数在需要使用 IF-TH
13、EN-ELSE 逻辑DECODE 函数SELECT last_name, job_id, salary, DECODE(job_id, IT_PROG, 1.10*salary, ST_CLERK, 1.15*salary, SA_REP, 1.20*salary, salary) REVISED_SALARYFROM employees;DECODE 函数SELECT last_name, jobDECODE 函数SELECT last_name, salary, DECODE (TRUNC(salary/2000, 0), 0, 0.00, 1, 0.09, 2, 0.20, 3, 0.30, 4, 0.40, 5, 0.42, 6, 0.44, 0.45) TAX_RATEFROM employeesWHERE department_id = 80;使用decode函数的一个例子:DECODE 函数SELECT last_name, sal嵌套函数单行函数可以嵌套。嵌套函数的执行顺序是由内到外。F3(F2(F1(col,arg1),arg2),arg3)步骤1 = 结果1步骤2 =结果2步骤3 =结果3嵌套函数单行函数可以嵌套。F3(F2(F1(col,arg1SELECT last_name
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年山东省滕州市高一化学上册期末考试真题附答案【基础题】
- 2026年江苏省昆山市高三生物上册期末考试测试卷带答案
- 2026年广东省兴宁市高三历史上册期末考试模拟卷【典型题】附答案
- 2026年湖南省耒阳市高一历史上册期末考试真题(必刷)附答案
- 2026年湖北省天门市高三历史上册期末考试自测卷及答案【考点梳理】
- 2026年辽宁省开原市高三生物上册期末考试模拟测试卷带答案
- 2026年黑龙江省讷河市高三历史上册期末考试检测卷及1套参考答案
- 2026年吉林省敦化市高三历史上册期末考试模拟卷附参考答案【基础题】
- 2026年浙江省临海市高三生物上册期末考试模拟卷含答案
- 2026年广东省连州市高一化学上册期末考试模拟测试卷及参考答案【考试直接用】
- 一年级上册心理健康课件 让我们做朋友吧
- NBT 10209-2019《风电场工程道路设计规范》
- 2026分红险与万能险保险销售资质考试试题及答案
- 2026年乐山市商业银行普惠客户经理社会招聘笔试备考试题及答案详解
- 2026年国企文秘考试试题及答案
- TCSUS《高浓度含盐有机废水湿式氧化处理技术规范》
- 年屠宰加工1万头肉牛和15万只肉羊项目环境影响评价报告书
- 护理仪器安全管理
- 围堰施工安全监理实施细则
- 2026贵州贵阳轨道交通三号线建设运营有限公司社会招聘1人笔试备考题库及答案解析
- 污水检查井预制施工方案
评论
0/150
提交评论