`

ORACLE单行函数

阅读更多

 

可以作下列事情: 描述SQL中可用的不同函数类型 在select语句中使用字符、数字和日期函数 描述转换函数的应用 函数是SQL非常有用的特性,可以实现下列功能: 执行数据的计算 编辑单独的数据项 操作多行的输出(Manipulate output for groups of rows) 格式化日期和数字的显示 转换数据类型 SQL函数有时候需要参数,但是总会返回一个值;过程主要是完成一个事件 单行函数:操作数据项;接受参数并返回一个值;作用于每一个返回的行;每行返回一个结果;可能会改变数据类型;可以嵌套;可以使用用户定义的常量、变量值、列名或者表达式作为参数 单行函数分为字符函数、数字函数、日期函数、转换函数和一般函数,可以在select, where, order by子句中使用 一般函数:NVL,NVL2,NULLIF,COALSECE,CASE,DECODE 字符函数接受字符数据,返回字符或者数字。字符函数分为大小写转换函数(Lower, Upper, Initcap首字目大写)和字符串操作函数(concat, substr, length, instr, lpad/rpad, trim, replace)。 SUBSTR(column|expression,m[,n])->返回从m开始的n个字符;若m为负值,则从末尾开始数m INSTR(column|expression,'string', [,m], [n] )->从m位置开始寻找第n个string字符(串)(缺省m,n为1) LPAD/RPAD(column|expression, n,'string')->扩展到n个字符宽,不足部分使用string字符添加 TRIM(leading|trailing|both, trim_character FROM trim_source)->删除前导字符串,如果后面的trim_character和trim_source都是literal字符串,一定要使用单引号包围起来 REPLACE(text,search_string,replacement_string)->替换 CONCAT('Hello', 'World') -> HelloWorld SUBSTR('HelloWorld',1,5) -> Hello LENGTH('HelloWorld') -> 10 INSTR('HelloWorld', 'W') ->6 LPAD(salary,10,'*') -> *****24000 RPAD(salary, 10, '*') -> 24000***** TRIM('H' FROM 'HelloWorld') -> elloWorld 数字函数:Round圆整,Trunc截断,Mod取模 ->其中Round, Trunc也可以用于日期函数 ROUND(column|expression, n)->四舍五入到n为小数,如果n为负值,则从小数点向左边数 round(345.23,-3)=0; round(345.23,-2)=300; round(345.23,-1)=350; round(345.23)=345 TRUNC(column|expression,n)->截断到n为小数,如果n为负值,则从小数点向左边数 trunc(345.23,-3)=0; trunc(345.23,-2)=300; trunc(345.23,-1)=340; trunc(345.23)=345 测试函数或者计算结果时可以使用dual这个虚假的表 SELECT ROUND(45.923,2), ROUND(45.923,0), ROUND(45.923,-1) FROM DUAL; Oracle数据库内部以下列方式存储日期: 世纪,年,月,日,小时,分,秒,缺省的日期格式为DD-MON-RR 当插入日期函数时,世纪值自动从sysdate函数(返回当前数据库服务器的日期和时间)取得 允许的日期和数字的操作: date + number, date - number, date - date, date + number/24 日期函数: MONTHS_BETWEEN(date1, date2)->两个日期间的月份,注意月份为中文的情况 ADD_MONTHS(date, n)->添加月份 NEXT_DAY(date, 'char')->找到下一个星期几(可以为数字或者字符串) LAST_DAY(date)->发现包含date所在月份的最后一天 ROUND(date[,'fmt'])->圆整到格式中所指定的单位,省略的话圆整到最近的天 TRUNC(date[, 'fmt'])->截断到格式中所指定的单位,省略的话截断到最近的天 假定SYSDATE = '25-JUL-95': • ROUND(SYSDATE,'MONTH') -> 01-AUG-95 • ROUND(SYSDATE ,'YEAR') -> 01-JAN-96 • TRUNC(SYSDATE ,'MONTH') -> 01-JUL-95 • TRUNC(SYSDATE ,'YEAR') -> 01-JAN-95 转换函数 隐式转换和显式转换(data type to data type) 尽管隐式转换可以使用,推荐使用显式转换以使得SQL语句更可靠 隐式转换:VARCHAR OR VARCHAR2 -> NUMBER; VARCHAR OR VARCHAR2 -> DATE NUMBER -> VARCHAR2; DATE -> VARCHAR2 显式转换: TO_CHAR(number|date,[ fmt],[nlsparams]) TO_NUMBER(char,[fmt],[nlsparams]) TO_DATE(char,[fmt],[nlsparams]) The nlsparams parameter specifies the following characters, which are returned by number format elements: · Decimal character · Group separator · Local currency symbol · International currency symbol TO_CHAR(date, 'format_model')->格式模式是大小写敏感的,必须使用单引号包围,一定要使用逗号把格式和日期值间隔开来,使用fm可以把前面的空格或者零压缩掉 日期格式模式: CC (世纪),YYYY,YYY,YY,Y(四个数字表示的年份;分别表示使用4位、后3位、后两位和后一位来表示年份),YEAR(拼写的年份),Q(季节),MM(两个数字表示的月份),MONTH(月份全名,九个字符长),MON(月份的三字缩写),RM(罗马数字表示的月份),WW(一年的第几个星期),W(月份的第几个星期),DY(星期的三字缩写),DAY(星期全称,九个字符长),DDD(一年的第几天),DD(一个月的第几天),D(一星期的第几天) BC,B.C.,AM,A.M.,HH,HH12,HH24,MI,SS,SSSSS(午夜过后的秒数) HH24:MI:SS AM -> 15:45:32 PM; DD "of" MONTH -> 12 of OCTOBER; /.,"of the" -->标点和引用的字符会在日期中原样输出 DDspth -> fourteenth; DDth -> 4th; DDsp -> four SELECT last_name, TO_CHAR(hire_date, 'fmDD Month YYYY') HIREDATE FROM employees; TO_CHAR(number, 'format_model') 9:代表数字 0:强制显式0 $:显示$符号 L:显示本地货币符号 .:打印小数点 ,:显示千位的分隔符 当值大于给定格式的位数时,Orale数据库会把整个数字显式为# TO_DATE(char[, 'format_model']) ->有个fx限制符,使用后必须精确的匹配,包括前后的空格个数 RR日期格式: ________|_____给定年份_________________ 当前年份|____0~49___|____50~99_______ 0~49___|___Current__|____Before_______ 50~99__|____Next____|____Current______ 单行函数可以嵌套任意层,从最内层开始计算 SELECT TO_CHAR(NEXT_DAY(ADD_MONTHS (hire_date, 6), 'FRIDAY'), 'fmDay, Month DDth, YYYY') "Next 6 Month Review" FROM employees ORDER BY hire_date; 一般函数可以使用任何数据类型,并且可以使用NULL NVL (expr1, expr2)->expr1为NULL,返回expr2;不为NULL,原样返回。注意两者的类型要一致 NVL2 (expr1, expr2, expr3) ->expr1不为NULL,返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话,expr3会转换为expr2的类型 NULLIF (expr1, expr2) ->相等返回NULL,不等返回expr1 COALESCE (expr1, expr2, ..., exprn) ->返回第一个不为NULL的表达式,各个表达式类型一致 条件表达式 CASE expr WHEN comparison_expr1 THEN return_expr1 [WHEN comparison_expr2 THEN return_expr2 WHEN comparison_exprn THEN return_exprn ELSE else_expr] END "alias_name" ->此处可以指定一个别名 如果没有任何一个条件匹配,而且没有ELSE子句,那么返回NULL(不能在上面返回的表达式中使用literal NULL)。上面所有的表达式都必须为同一种数据类型 DECODE(col|expression, search1, result1 [, search2, result2,...,] [, default]) "alias_name" ->此处可以指定一个别名 练习(答案在卷2的288页) 1. select sysdate "Date" from dual; 2. select employee_id, last_name, salary, round(salary+salary*0.15) "New Salary" from employees; 4. select employee_id, last_name, salary, round(salary+salary*0.15) "New Salary", round(salary+salary*0.15)-salary "Increase" from employees; 5. select initcap(last_name) "Name", length(last_name) "Length" from employees where substr(initcap(last_name),1,1) in('J','A','M') order by last_name; 注意后面字母的单引号!! 答案: SELECT INITCAP(last_name) "Name", LENGTH(last_name) "Length" FROM employees WHERE last_name LIKE 'J%' OR last_name LIKE 'M%' OR last_name LIKE 'A%' ORDER BY last_name; 6. select last_name,round(months_between(sysdate,hire_date)) "MONTHS_WORKED" from employees order by "MONTHS_WORKED"; 注意使用前面的日期减去后面的日期 7. select last_name||' earns '||to_char(salary,'$999,999.99')||' monthly but wants '||to_char(salary*3,'$999,999.99')||'.' "Dream Salaries" from employees; 单引号!! 8. select last_name,LPAD(salary,15,'$') salary from employees; 9. select last_name, hire_date, to_char(next_day(add_months(hire_date,6),'monday'),'fmDay, "The" Ddspth "of" fmMonth, YYYY') review from employees; 如果要在next_day中使用数字,按英国的习惯星期天为1 10. select last_name, hire_date, to_char(hire_date,'DAY') day from employees order by to_char(hire_date-1, 'D'); 注意后面排序的使用 11. select last_name,nvl(to_char(commission_pct),'NO COMMISSION') COMM from employees 注意这里格式一定要一致 12. select last_name||' '||lpad(' ',salary/1000+1,'*') "EMPLOYEES_AND_THEIR_SALARIES" from employees order by salary desc 此题看了答案才知道,惭愧 13. select job_id,decode (job_id, 'AD_PRES', 'A', 'ST_MAN', 'B', 'IT_PROG', 'C', 'AS_REP', 'D', 'ST_CLERK', 'E','O') G from employees 注意decode要使用小括号,表达式之间使用逗号间隔 14. select job_id,case job_id when 'AD_PRES' then 'A' when 'ST_MAN' then 'B' when 'IT_PROG' then 'C' when 'AS_REP' then 'D' when 'ST_CLERK'then 'E' else 'O' end G from employees

分享到:
评论

相关推荐

    ORACLE单行函数和组函数

    ### ORACLE单行函数和组函数详解 #### 一、概述 在Oracle数据库中,函数是一种重要的编程元素,用于执行特定任务并返回结果。根据其处理数据的方式不同,可以将Oracle函数大致分为两类:单行函数和组函数(也称聚合...

    oracle第4章 单行函数

    ### Oracle 第四章 单行函数 #### 一、引言 在Oracle数据库的学习过程中,了解并掌握单行函数是非常重要的一步。单行函数是指针对每一行的数据进行处理,并返回一个处理结果的函数。这类函数在查询语句中非常常见,...

    Oracle常用单行函数

    Oracle数据库系统提供了丰富的单行函数,这些函数在日常的编程和数据处理中极为重要。本文主要介绍Oracle中的字符函数、数学函数、日期函数以及转换函数。 首先,让我们详细探讨字符函数。字符函数主要用于处理字符...

    Oreacle数据库单行函数练习题(包答案)

    ### Oracle数据库单行函数知识点详解 #### 一、数值处理函数 **1. ROUND 函数** - **功能描述:** `ROUND` 函数用于对数值进行四舍五入操作,可以指定四舍五入的精度。 - **语法结构:** `ROUND(number, ...

    Oracle查询练习(单行,函数查询)

    在这个“Oracle查询练习(单行,函数查询)”中,我们将深入探讨两种关键的查询技术:单行函数和组函数。 单行函数主要应用于对单个值进行操作并返回一个新值。这些函数广泛用于数据转换、计算和格式化。例如,`...

    ORACLE第四章单行函数ppt课件.ppt

    Oracle 单行函数详解 本章要点包括字符函数、数字函数、日期函数、转换函数和通用函数等单行函数。 字符函数 字符函数用于处理字符串,包括大小写处理函数和字符处理函数。大小写处理函数可以将字符串转换为大写...

    oracle笔记单行函数

    oracle笔记单行函数,oracle中单行函数有哪些,如何使用,具体案例和代码!

    Oracle_PL(SQL)单行函数和组函数及使用

    ### Oracle_PL(SQL)单行函数和组函数及使用 #### 一、概述 在Oracle数据库中,SQL 和 PL/SQL 提供了大量的内置函数,这些函数可以极大地提高开发效率和简化查询逻辑。根据处理数据的不同方式,这些函数可以分为...

    PLSQL单行函数和组函数详解

    本篇文章将详细讲解PL/SQL中的单行函数和组函数。 首先,单行函数是针对单行数据进行操作的函数,它们可以应用于SQL查询的不同部分,如SELECT、WHERE、ORDER BY等。例如,`TO_CHAR`函数用于格式化日期或数值输出,`...

    oracle常用函数

    这些只是Oracle单行函数的一小部分,实际上还有更多如`SUBSTR`、`LENGTH`、`TRIM`、`REPLACE`等用于字符串操作的函数,以及`ROUND`、`MOD`、`ABS`等用于数值计算的函数,以及日期时间处理的函数,如`TO_DATE`、`...

    oracle总结,PLSQL单行函数和组函数详解

    总的来说,理解并熟练运用Oracle的单行函数和组函数对于数据库管理和开发至关重要。通过这些函数,我们可以更有效地处理数据,创建复杂的查询,优化性能,以及构建复杂的业务逻辑。不断学习和实践,将有助于提高你在...

    oracle03单行函数.ppt

    Oracle数据库中的单行函数是SQL查询中不可或缺的一部分,它们用于处理单行数据并返回单一结果。这些函数可以操作字符、数字和日期数据类型,帮助我们完成数据转换、格式化和计算等多种任务。以下是对这些单行函数的...

    oracle函数大全.doc

    Oracle 函数大全 Oracle 函数大全是 Oracle 数据库管理系统中的一系列函数,...本文档中还介绍了更多的单行函数和组函数,详细的讲解了每个函数的使用方法和示例代码,为开发者提供了一个 Oracle 函数大全的参考手册。

    ORACLE分析函数大全

    分析函数在处理报表和数据迁移任务时尤其有用,因为它们可以基于分组计算聚合值,并为每个分组返回多行,而不仅仅是单行结果。这种功能在处理大量数据时提供了更精细的控制和丰富的信息。 分析函数主要分为以下几类...

    oracle函数速查

    单行函数在Oracle中用于处理单行数据,适用于SELECT、WHERE、ORDER BY等SQL语句。例如,`TO_CHAR`函数可以将日期转换为特定格式的字符串,`UPPER`函数将字符串转换为大写,而`SOUNDEX`函数则用于根据发音对字符串...

    ORACLE 分析函数大全

    Oracle 分析函数是一种强大的SQL工具,它允许你在处理数据时执行复杂的分析操作,而不像聚合函数那样仅仅返回单行结果。分析函数在Oracle 8.1.6版本中被引入,自那时起,它们已经成为数据库查询和报表生成的重要组成...

    Oracle常用函数.pdf

    这些函数主要分为两大类:单行函数和多行函数(也称为聚合函数)。单行函数通常用于处理表中的每一行数据,并返回一个结果;而多行函数则基于一组或多行数据执行特定的计算,并返回一个单一的汇总值。 #### 二、...

    SQL 单行函数介绍

    ### SQL 单行函数详解 #### 一、引言 SQL 单行函数是在 SQL 查询中经常使用的一类工具,它们对于数据的处理至关重要。单行函数的特点在于它们每次只处理一行数据,并针对该行返回一个结果。这些函数广泛应用于各种...

    oracle(数据类型函数).

    里面有详细的oracle函数 1、Oracle数据类型 2、Oracle函数分为单行函数和多行函数两大类(sql_function) 单行函数分类 字符函数 数值函数 日期函数 转换函数 通用函数 函数嵌套 分组函数:集合操作符(了解) 实现...

Global site tag (gtag.js) - Google Analytics