开发手册 欢迎您!
软件开发者资料库

使用单行函数

使用单行函数 - Oracle数据库11g准备工作指南管理员认证助理,OPN认证专家考试。本指南可帮助您逐步在线准备证书考试,并且完全免费。此认证旨在使您获得赢得基于Oracle SQL的项目的简短列表。 Oracle技术认证是一种有价值的,行业认可的凭证,表明已经证明的知识水平和技能。

使用单行函数自定义输出

Oracle SQL提供了丰富的内置函数库,可用于各种任务.函数的基本功能可以是字符串转换,字符串或子字符串操作,数值数据的数学计算以及日期类型值的日期操作. SQL函数可选择从用户获取参数并强制返回一个值.

在更广泛的类别中,有两种类型的函数: -

单行函数  - 单行函数是处理单行并且每行返回一个输出的函数.例如,长度和大小写转换函数是单行函数.

多行函数  - 多行函数对一组行起作用并返回一个完整的结果行集.它们也称为组函数.

单行函数

单行函数可以是字符函数,数字函数,日期函数和转换函数.请注意,这些函数用于处理数据项.这些函数需要一个或多个输入参数并对每一行进行操作,从而为每一行返回一个输出值.参数可以是列,文字或表达式.单行函数可以在SELECT语句,WHERE和ORDER BY子句中使用.单行函数可以是 -

  • 常规函数  - 通常包含NULL处理函数.该类别下的功能是NVL,NVL2,NULLIF,COALESCE,CASE,DECODE.

  • 案例转换功能  - 接受字符输入并返回一个字符值.类别下的函数是UPPER,LOWER和INITCAP.

    • UPPER函数将字符串转换为大写.

    • LOWER函数将字符串转换为小写.

    • INITCAP函数仅转换a的初始字母表字符串到大写.


  • 字符函数  - 接受字符输入并返回数字或人物价值.该类别下的功能是CONCAT,LENGTH,SUBSTR,INSTR,LPAD,RPAD,TRIM和REPLACE.

    • CONCAT函数连接两个字符串值.

    • LENGTH函数返回输入字符串的长度.

    • SUBSTR函数返回从给定起点到终点的字符串的一部分.

    • INSTR函数返回给定字符串中字符或字符串的数字位置.

    • LPAD和RPAD函数填充具有给定字符的给定字符串达到特定长度.

    • TRIM函数修剪从开头或结尾输入的字符串.

    • REPLACE函数用给定的字符替换输入字符串中的字符.

  • 日期函数  - 日期算术运算返回日期或数值.该类别下的函数是MONTHS_BETWEEN,ADD_MONTHS,NEXT_DAY,LAST_DAY,ROUND和TRUNC.

    • MONTHS_BETWEEN函数返回两个日期之间的月数.

    • ADD_MONTHS函数在输入日期添加'n'个月.

    • NEXT_DAY函数返回指定日期的第二天.

    • LAST_DAY函数返回输入日期的月份的最后一天.

    • 使用ROUND和TRUNC函数舍入并截断日期值.

  • 数字函数  - 接受数字输入并返回数值.该类别下的函数是ROUND,TRUNC和MOD.

    • ROUND和TRUNC函数用于舍入和截断数值.

    • MOD用于返回两个数字之间的除法运算的剩余部分.

插图

常规函数

下面的SELECT查询演示了NVL函数的使用.

SELECT first_name, last_name, salary, NVL (commission_pct,0) FROM employeesWHERE rownum < 5;FIRST_NAME           LAST_NAME                     SALARY NVL(COMMISSION_PCT,0)-------------------- ------------------------- ---------- ---------------------Steven               King                           24000                     0Neena                Kochhar                        17000                     0Lex                  De Haan                        17000                     0Alexander            Hunold                          9000

案例转换函数

下面的SELECT查询演示了大小写转换函数的使用.

SELECT UPPER (first_name), INITCAP (last_name), LOWER (job_id)FROM employeesWHERE rownum < 5;UPPER(FIRST_NAME)    INITCAP(LAST_NAME)        LOWER(JOB_-------------------- ------------------------- ----------STEVEN               King                      ad_presNEENA                Kochhar                   ad_vpLEX                  De Haan                   ad_vpALEXANDER            Hunold                    it_prog

字符函数

下面的SELECT查询演示了使用CONCAT函数连接两个字符串值.

SELECT CONCAT (first_name, last_name) FROM employeesWHERE rownum < 5;CONCAT(FIRST_NAME,LAST_NAME)--------------------------------EllenAbelSundarAndeMozheAtkinsonDavidAustin

下面的SELECT查询演示了SUBSTR和INSTR函数的使用.SUBSTR函数将输入字符串的部分从第1位返回到第5位.INSTR函数ret在第一个名称中输入字符'a'的数字位置.

SELECT SUBSTR (first_name,1,5), INSTR (first_name,'a')FROM employeesWHERE rownum < 5;SUBST INSTR(FIRST_NAME,'A')----- ---------------------Ellen                     0Sunda                     5Mozhe                     0David                     2


下面的SELECT查询演示了用法LPAD和RPAD可以打印员工和工作信息.

SELECT RPAD(first_name,10,'_')||LPAD (job_id,15,'_')FROM employeesWHERE rownum < 5;RPAD(FIRST_NAME,10,'_')||-------------------------Steven____________AD_PRESNeena_______________AD_VPLex_________________AD_VPAlexander_________IT_PROG

数字函数

下面的SELECT查询演示了如何使用ROUND和TRUNC函数.

SELECT ROUND (1372.472,1)FROM dual;ROUND(1372.472,1)-----------------           1372.5SELECT TRUNC (72183,-2)FROM dual;TRUNC(72183,-2)---------------          72100

日期算术运算

下面的SELECT查询显示了日期算术函数,其中员工雇用日期和sysdate的差异已经完成.

SELECT employee_id, (sysdate - hire_date) Employment_daysFROM employeesWHERE rownum < 5;EMPLOYEE_ID EMPLOYMENT_DAYS----------- ---------------        100      3698.61877        101      2871.61877        102      4583.61877        103      2767.61877

日期函数

下面的SELECT查询演示使用MONTHS_BETWEEN,ADD_MONTHS,NEXT_DAY和LAST_DAY函数.

SELECT employee_id, MONTHS_BETWEEN (sysdate, hire_date) Employment_monthsFROM employeesWHERE rownum < 5;EMPLOYEE_ID EMPLOYMENT_MONTHS----------- -----------------        100        121.504216        101        94.3751837        102        150.633248        103        90.9558289SELECT ADD_MONTHS (sysdate, 5), NEXT_DAY (sysdate), LAST_DAY (sysdate)FROM dual;ADD_MONTH NEXT_DAY( LAST_DAY(--------- --------- ---------01-JAN-14 05-AUG-13 31-AUG-13