java029
是数据库产品中提供的能够处理查询结果的方法
1.函数能够用于下面的目的:
1)执行数据计算。
2)修改单个数据项。
3)格式化显示的日期和数字。
4)转换列数据类型。
5)函数有输入参数,并且总有一个返回值。
2.函数类型
单行函数:仅对单行进行运算,并且每行返回一个结果
多行函数(聚合函数):可以操纵成组的行,每个行组给出一个结果
3.函数的语法
function_ name(arg1,arg2....
function name为函数名称
arg1,arg2是由函数使用的任意参数,参数可以是一个列名、 用户提供的常数、变星值、或者-个表达式;
单行函数
1.单行函数的特性
1)作用于每一个返回行,每行返回一个结果
2)可能需要一个或多个参数
3)可以修改结果集的数据类型
4)可以嵌套
5)可能返回一个与参数不同类型的数据值
6)能够用在SELECT、WHERE和ORDER BY子句中
2.单行函数的分类
1)字符函数
接受字符输入,可以返回字符或者数字值
2)数字函数
接受数字输入,返回数字值
3)日期函数
对DATE数据类型的值进行运算(除了MONTHS BETWEEN函数返回一个数字,所有日期函数都返回一个DATE数据类型的值)
4)转换函数
从一个数据类型到另一个数据类型转换一 个值
5)通用函数
NVL, NVL2, NULLIF, COALSECE, CASE, DECODE
3.函数嵌套
单行函数能够嵌套任意层次且嵌套函数的计算是最里层到最外层
举例:显示受雇日期6个月后的下一个星期五的日期。结果日期将应该是:星期,月,日,年。使
用Next 6
Month Review作为列别名。结果按受雇日期排序
示例: select to char(next_ day(add months(hire_ dat,6),'Friday'), day,mm"月",d"8"yyy"
年") as "Next 6 Month Review" from employees order by hire_ date;
字符函数
特点:单行字符函数接受字符输入,既可以返回字符也可以返回数字值
分类:
1)大小写处理函数
lower转换大小写混合的字符串为小写字符串
upper转换大小写混合的字符串为大写字符串
initcap将每个单词的首字母转换为大写,其他字母为小写
注意:大小写处理函数需要一个参数, 参数类型为字符串类型,返回一个字符串
示例: select 'The Job id for Ilupper(last name)|' is "llower(job _id) as "EMPLOYEE
DETAILS" from employees;
示例: select employee_ id,last_ name,department id from employees where last name =initcap('higgins');
2)字符串处理函数(from+dual表)
concat字符串的拼接
示例: select concat("'Hello','World) from dual;
replace对某个指定的字符进行替换操作
示例- -: select replace("HelloWorld',",'L') from dual;
数字函数
1) ROUND四舍五入指定小数的值
示例: select round(49.5555,2) from dual; //以小数点为界,左边为负数,右边为正
2) TRUNC截断指定小数的值
示例: select trunc(34.5555,2) from dual;
3) MOD返回除法的余数
示例: select mod(100,30) from dual;
举例:
1)计算所有是销售代表(SA REP)的雇员的工资被5000除后的余数
示例: select last_ name,salary,mod(salary,5000) from employees where job_ id =
'SA REP';
日期处理
1.日期的使用: SYSDATE函数可直接返回系统的时间
2.用日期计算
1) date+-number 等于加或减一个天数到日期 上(返回日期)
示例: select sysdate+ 1 from dual;
2) date-date 等于用一个日期减另一个日期(返回数字)
示例: select sysdate-hire_ date from employees;
3) date+ number/24加一个小时数到一个日期上(返回日期)
3.日期函数
1) MONTHS_ BETWEEN两个日期之间的月数(返回数字)
示例: select last name,round(months_ between(sysdate,hire_ date)) from employees;
2) ADD MONTHS加日历月到日期(返回日期)
示例: select add months(sysdate,1) from dual;
3) NEXT_ DAY下个星期几是几号(返回日期)
示例一: select next_ day(sysdate,'Monday') from dual;
示例二: select next day(sysdate,2) from dual; //第二个参数可以为数字,1-7(周日开始计算)
4) LAST _DAY指定月的最后一天(返回日期)
示例: select last_ day(sysdate) from dual;
5) ROUND四舍五入日期(返回日期)
示例一: select round(sysdate) from dual;
示例二: select round(sysdate,'y") from dual; //可指定按年或月或日来四舍五入
6) TRUNC截断日期(返回日期)
示例一: select trunc(sysdate) from dual;
转换函数
1.数据类型转换
1)隐式数据类型转换:当源和目标数据类型不同的时候,如果无转换函数,则会发生隐式转换(自
动转换)
VARCHAR2 or CHAR到NUMBER
示例: select employee_ id from employees where employee_ id = '206';
VARCHAR2 or CHAR到DATE
示例: select hire_ date from employees where hire_ date like '%02';
NUMBER到VARCHAR2
DATE到VARCHAR2
隐式转换的问题: 隐式转换的最大问题就是转换时会导致索引的无效,进而可能导致全表扫描。当表的数据量很大的时候,会产生很大的性能问题。比如说,VARCHAR2和NVARCHAR2隐式数据类型转换导致的性能问题。
2)显式数据类型转换
通过数据库中的转换函数完成数据类型的转换
2.TO_ CHAR将一个日期转换为字符类型(显示数据类型转换)
基本格式:
1)日期格式
YYYY数字全年拼
YEAR年的拼写
MM月的两数字值
MONTH月的全名
MON月的三字母缩写
DY周中天的三字母缩写
DAY周中天的全名
DD月的数字天
2)时间格式
AM或PM正午指示
A.M.或P.M.带句点的正午指示
HH天的小时
MI分钟
SS秒
SSSSS午夜之后的秒0-86399
示例: select to_ char(sysdate,'hh1 2:mi:ss AM') from dual;
4)其他格式
1)模板中可以给定常量串,常量串必须位于模板当中
2) /.. 在结果中使用标点符号
3) TH序数(例如DDTH显示为4TH)
4) SP拼写出数字(例如DDSP显示为FOUR)