字符函数:简化操作———————————————单行函数、多行函数
单行函数:操作单个数据
多行函数:操作的数据是多个
——————————————————————————————————————————
单行函数
——————————————————————————————————————
字符函数
lower('字母') ----------->转小写:
upper('字母')------------>转大写
initcap('字母')----------->首字母大写
字符控制函数:concat('a','b')链接
substr(a,b) 从a中,b位开始到最后
substr(a,b,c) 从a中,b位开始,取c个长度
length('汉字') 字符数
lengthb('汉字') 字节数
instr(a,b) 在a中查找b,返回其位置 ,没有返回则是0
lpad('字母',10,'符号') 左填充 ,例如:lpad('abc',10,'*') ------->abc共三位,需要10位,左填7个*
rpad('字母',10,'符号') 右填充
trim('H',from 'Hello WorldH') from dual ; ---->去掉首尾的H
replace('Hello world','l','*') ---->将l替换成*
————————————————————————————————————————
数学函数
Round(45.345,2) ------->将45.345保留2位小数,正数是小数区,负数是整数区
trunc(数字) ---------->向下取整
————————————————————————————————————————
日期函数
select sysdate from dual; 日期默认输出格式:MM-DD-YY
select to_char(sysdate,'yyyy-mm-dd') ----->格式 YYYY-MM-DD
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; ----------->输出格式:YYYY-MM-DD HH(24小时制) :MI:SS
计算的天数可以相加减,但是日期不能相加
months_between()相差天数,例如:select ename ,hiredate months_between (sysdate,hiredate) from emp;计算hiredate和sysdate相差的月份
add_months()相加月份----->例如:select add_months(sysdate,53) from dual ; 表示53个月后
last_day() 这个月份的最后一天,例如:select last_day(sysdate) from dual ; 表示一个月的最后一天
next_day() 下一个星期几 ,例如:select next_day(sysdate,'星期六') from dual; 下一个星期六
round(时间,'年或月或日') 如果是年,按月算,如果是月,按日算
————————————————————————————————————————
转换函数
to_char(date或number,转换格式)
日期转换:YYYY----年,MM------月,DY-------星期,DD--------日,可以在中间加入字符串
数字转换:9代表数字,L代表本地货币, .小数点, ,千位符
例如:to_char(123456,'L9,999.99') ----->¥123.456.00
————————————————————————————————————————
通用函数
NVL(a,b) ------------------->如果a为null,则返回b,如果a不为null,返回a
NVL2(a,b,c) ---------->当a=null的时候,返回c,否则返回b
nullif(a,b) ----------->当a=b时,返回null,否则返回a
coalesce() ------------->从左到右找到第一个不为null的值
————————————————————————————————————————————————————————
条件表达式
IF-THEN-ELSE
在SQL语句中实现if-else语句
CASE 表达式 SQL99格式
DECODE 表达式 orcale自己的语法
CASE :例如:
CASE 表达式 WHEN 表达式 THEN 返回值 WHEN 表达式 THEN 返回值 WHEN 表达式 THEN 返回值 ELSE 返回值
DECODE :例如:
DECODE (表达式,'条件一',返回值1,'条件二',返回值2,‘条件三’,返回值3)
————————————————————————————————————————————————
分组函数
AVG() COUNT() MAX() MIN() SUM()
在select 语句中,包含字段若不在多行函数中,那么必须出现在分组函数中
例如:select a,b,c,d ,count(e) from emp group by a,b,c,d
与它相反,在group by 中出现的字段,可以不出现在select包含的字段中,例如:
select a,b,c count(e) from emp group by a,b,c,d
————————————————————————————————————————————————
多个分组函数过滤使用having
where和having的区别:
where 后面不能使用多行函数,where在from后面,having在group by后