一.SQL中的函数分为单行函数和多行(聚合)函数。
单行函数的输入是一行,每行返回一个结果,可以被嵌套,输入参数可以是一个列的名字,可以是表达式,也可以是一个常数。
二.单行函数包括:(1)汇总函数;(2)日期与时间函数;(3)数学函数;(4)字符函数;(5)转换函数;(6)其它函数
(1)日期/时间函数
日期格式:DD-MON-RR
ADD_MONTHS('31-JAN-96',1)='29-FEB-96':将给定的日期增加n个月;
NEXT_DAY('01-SET-95','FRIDAY')='08-SEP-95':返回与指定日期在同一个星期或之后一个星期内的,你所要求的星期天数的确切日期;
LAST_DAY('01-FEB-95')='28-FEB-95':返回指定月份的最后一天;
MONTHS_BETWEEN('01-SEP-95','11-JAN-94')=19.6774194:返回给定的两个日期中有多少个月;
ROUND('25-JUL-03','MONTH')='01-AUG-03'
ROUND('25-JUL-03','YEAR')='01-JAN-04'
TRUNC('25-JUL-03','MONTH')='01-JUL-03'
TRUNC('25-JUL-03','YEAR')='01-JAN-03'
NEW_TIME():把时间调整到你所在的时区;
SYSDATE:返回系统的日期和时间;
如: SELECT last_name,TRUNC((SYSDATE-hire_date)/7,0) AS WEEKS
FROM employees
WHERE department_id=90;
(2)字符函数
INITCAP('SQL Course'):将参数的第一个字母变为大写,此外其它的字母则转换成小写;
LOWER('SQL Course'):将参数全部转换为小写字母;
UPPER('SQL Course'):将参数全部转换为大写字母;
字符串操作函数:
CONCAT('Hello','World')=HelloWorld:
将两个字符串连接起来,和“||”的功能类似;
LPAD(salary,10,'*')=*****24000
RPAD(salary,10,'*')=24000*****:
这两个函数最少需要两个参数,最多需要三个参数。每一个参数是需要处理的字符串,
第二个参数是需要将字符串扩充的宽度,第三个参数表示加宽部分用什么字符来做填补,
第三个参数的默认值为空格,但也可以是单个的字符或字符串。
LTRIM('H' FROM 'HelloWorld')=elloWorld
RTRIM('l' FROM 'HelloWorld')=HelloWord:
这两个函数至少需要一个参数,最多允许两个参数。第一个参数是需要处理的字符串,
第二个参数也是一个字符或字符串,默认则是空格。如果第二个参数不是空格的话,
那么该函数将会像剪除空格那样剪除所指定的字符。
REPLACE('JACK and JUE','J','BL')=BLACK and BLUE:
该函数需要三个参数,第一个参数是需要搜索的字符串,第二个参数是搜索的内容,第三个参数则
是需要替换成的字符串,如果第三个参数省略或者是NULL,那么将只执行搜索操作而不会
替换任何内容。
SUBSTR('HelloWorld',1,5)=Hello:
该函数有三个参数,允许你将目标字符串的一部分输出。第一个参数为目标字符串,第二个字符串是
将要输出的子串的起点,第三个参数是将要输出的子串的长度。
INSTR('HelloWorld','W')=6:
该函数有三个参数,第一个参数是目标字符串,第二个参数是匹配的内容,第三和第四个参数是数字,
用以指定开始搜索的起点以及指出第几个满足条件的将会被返回。
LENGTH('HelloWorld')=10:该函数将返回指定字符串的长度。
CHR():该函数返回与所给数值参数相当的字符,返回的字符取决于数据库所依赖的字符集;
TRANSLATE():该函数有三个参数:目标字符串,源字符串和目的字符串,在目标字符串与源字符串中均出现的字符
将会被替换成对应的目的字符串的字符。
如 SELECT employee_id,CONCAT(first_name,last_name) Name,job_id,LENGTH(last_name),
INSTR(last_name,'a') "Contains 'a'?"
FROM employees
WHERE SUBSTR(job_id,4) = 'REP';
(3)数字函数
ROUND(45.926,2) = 45.93:四舍五入
TRUNC(45.926,2) = 45.92:直接砍掉,不用四舍五入
MOD(1600,300)=100:取余数
(4)转换函数
TO_CHAR():该函数的最初功能是将一个数字转换为字符型,不同的解释器可能会使用它来转换其它的数据类型,
例如日期型转换为字符型:
TO_CHAR(hire_date,'MM/YY'),TO_CHAR(hire_date,'fmYYYY_MM_DD')
YYYY:年份的数字全称,YEAR:年份的英文全称,MM:月份的两位数字表示,MONTH:月份的英文全称
MON:月份的三位英文表示,DY:星期的三位英文表示,DAY:星期的全英文表示,DD:一个月中某一天的数字表示
HH24:MI:SS AM ----15:45:32 PM, DD "of" MONTH --- 12 of OCTOBER
数字转换成字符串型:TO_CHAR(number,'format_model')
format_model: 9表示数字0-9,0表示强制显示一个数字0,$表示在前面加个$,.表示打一个点,,表示三位一个
如TO_CHAR(salary,'$99,999.00')
TO_NUMBER('-$12,345.67','$99,999.99')=-12345.67:将一个字符串型数字转换为数值型。
TO_DATE('July 4,2007','Month DD,YYYY')=04-JUL-07:
(5)数学函数
ABS(column_name):返回给定数字的绝对值;
CEIL(column_name):返回与给定参数相等或比给定参数大的最小整数;
FLOOR(column_name):返回与给定参数相等或比给定参数小的最大整数;
COS,SIN,TAN,COSH,SINH,TANH:返回给定参数的三角函数值或反三角函数值,默认的参数认定为弧度制;
EXP(column_name):返回给定的参数为指数,以e 为底数的幂值。
LN和LOG:这是两个对数函数,其中LN返回给定参数的自然对数;
MOD(A,B):返回A与B相除后的余数;
POWER(A,B):返回某一个数对另一个数的幂,在使用幂函数时,第一个参数为底数,第二个为指数;
SIGH(A):如果A的值为负数,那么SIGN返回-1,如果A的值为正数,那么SIGN返回1,如果A=0,那么SIGN也返回0;
SORT(A):返回参数的平方根,由于负数是不能开平方的,所以我们不能将该函数应用于负数
(6)其它函数
CREATEST():该函数返回几个表达式中最大的;
LEAST():该函数返回几个表达式中最小的;
USER():该函数返回当前使用数据库的用户的名字;
NVL(exp1,exp2):如果第一个参数不是NULL,返回第一个参数,如果第一个参数为NULL,返回第二个参数
如:SELECT last_name,salary,NVL(commission_pct,0),(salary*12)+(salary*12*NVL(commission_pct,0)) AN_SAL
FROM employees;
NVL2(exp1,exp2,exp3):如果第一个参数不是NULL,返回第二个参数,如果第一个参数是NULL,返回第三个参数。
NULLIF(exp1,exp2):如果两个参数相等,返回NULL,如果不等,返回第一个参数;
COALESCE(exp1,exp2,...expn):从前往后数,返回第一个不为NULL的参数
CASE expresion WHEN comparision_expr1 THEN return_expr1
[WHEN comparision_expr1 THEN return_expr2
WHEN comparision_expr1 THEN return_exprn
ELSE else_expr]
END
DECODE(col|expression,search1,result1
[,search2,result2,...]
[,default]):功能和CASE类似
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22012035/viewspace-694127/ ,如需转载,请注明出处,否则将追究法律责任。