单行函数:
操作数据对象
接受参数返回一个结果
只对一行进行变换
每行返回一个结果
可以转换数据类型
可以嵌套
参数可以是一列或一个值
字符函数
1.大小写控制函数
LOWER:参数里面的内容,全部转换为小写字符
select LOWER('SQL Course') from dual;
UPPER:参数里面的内容,全部转换为大写字符
select UPPER('sql course') from dual;
INITCAP:参数里面的内容,单词首字母全部转换为大写字符
select INITCAP('sql course') from dual;
2.字符控制函数
CONCAT:将两个字符串连接起来,形成一个单一的字符串
select CONCAT('Hello', 'World') from dual;
SUBSTR:截取字符串
select SUBSTR('HelloWorld',1,5) from dual;
LENGTH:统计字符串的长度
select LENGTH('HelloWorld') from dual;
INSTR:显示查找的字符在字符串中的位置
select INSTR('HelloWorld', 'W') from dual;
RPAD,LPAD:字符不够的时候,在用规定字符凑够字符长度
select LPAD(5200,10,'*') from dual;
select RPAD(5200, 10, ‘*’) from dual;
TRIM:删除字符串开头或结尾规定的字符
select TRIM('H' FROM'HelloWorld') from dual;
select TRIM('d' FROM'HelloWorld') from dual;
REPLACE:替换
select REPLACE(‘abcd’,’b’,’m’) from dual;
3.数字函数
ROUND: 四舍五入
select ROUND(45.926, 2) from dual;
TRUNC:截断
select TRUNC(45.926, 2) from dual;
MOD: 求余
select MOD(1600, 300) from dual;
4.日期
函数SYSDATE 返回:日期,时间
select SYSDATE from dual;
日期函数
MONTHS_BETWEEN两个日期相差的月数
ADD_MONTHS向指定日期中加上若干月数
NEXT_DAY指定日期的下一个星期* 对应的日期
LAST_DAY本月的最后一天
ROUND日期四舍五入
TRUNC日期截断
TO_DATE函数对字符的转换
TO_DATE(char[, 'format_model'])
TO_DATE(‘2012年10月29日08:10:21’,’yyyy“年”mm”月”dd“日”hh:mi:ss’)
From dual
TO_CHAR函数对数字的转换
TO_CHAR(number, 'format_model')
SELECT TO_CHAR(salary, '$99,999.00') SALARY
FROM employees
WHERE last_name = 'Ernst';
TO_CHAR函数对日期的转换
select employee_id,last_name,hire_date
from employees
where to_char(hire_date,’yyyy-mm-dd’) = ‘1987-09-17’
TO_NUMBER 函数对字符的转换
TO_NUMBER(‘¥1,234,567,890.00’,’L999,999,999,999.99’)from dual
NVL 函数,NVL2 函数:将空值转换成一个已知的值
NULLIF 函数:
NULLIF (expr1, expr2) : 相等返回NULL,不等返回expr1
COALESCE 函数:同时处理交替的多个值
在SQL语句中使用IF-THEN-ELSE 逻辑
使用两种方法:
CASE 表达式
CASE expr WHEN comparison_expr1 THEN return_expr1
[WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr]
END
DECODE 函数
DECODE(col|expression, search1, result1 ,
[, search2, result2,...,]
[, default])
分组函数:作用于一组数据,并对一组数据返回一个值。
AVG:平均值
SUM :(合计)函数
MIN:(最小值)
MAX:(最大值)函数
COUNT:(计数)函数
注意:
组函数忽略空值
NVL函数使分组函数无法忽略空值
DISTINCT 关键字
COUNT(DISTINCTexpr)返回expr非空且不重复的记录总数
SELECT COUNT(DISTINCTdepartment_id) FROM employees;
GROUP BY:分组数据
SELECTcolumn, group_function(column)
FROM table
[WHERE condition]
[GROUP BYgroup_by_expression]
[ORDER BYcolumn];
HAVING:过滤分组
SELECTcolumn, group_function
FROMtable
[WHEREcondition]
[GROUP BYgroup_by_expression]
[HAVINGgroup_condition]
[ORDER BYcolumn];