sql 里面的常用函数

SELECT y.sname 名字,to_char (y.birthday,'yyyy-mm-dd pmhh:mi:ss')生日 FROM yuan y --日期型转换成字符型
SELECT to_date ('2017-11-12','yyyy-mm-dd') FROM dual --字符型转换成日期型
SELECT SYSDATE - to_date ('2017-11-12','yyyy-mm-dd')FROM dual  --当前系统时间与定义的一个时间的差值
SELECT y.cid 部门,MAX (y.sage) 最大年龄,MIN (y.sage)最小年龄,AVG(y.sage) 平均年龄,
SUM(y.sage)年龄总和, COUNT(1)计数 FROM yuan y GROUP BY y.cid  --分组函数
SELECT MOD(y.sage,3) FROM yuan y --取余函数,对年龄取余显示
SELECT y.sname ,DECODE (y.sex,1,'男',2,'女') FROM yuan y -- case ...when..效果相同
SELECT SUBSTR ('你好啊',2) FROM dual --2为索引值,索引值从1开始,显示的是'好啊'
SELECT SUBSTR ('你好啊',1,2) FROM dual --显示的是'你好'
--取整
-- 可以指定小数位数
SELECT TRUNC(12.845, 2) FROM dual   --取整函数    没有四舍五入,显示的是12.84,取小数点两位
SELECT ROUND(12.245, 2) FROM dual   --可以四舍五入,显示的是12.25
--只能取整,不可以指定小数位数
SELECT CEIL(12.345) FROM dual    --向上取整函数  显示的是13


SELECT FLOOR(12.345) FROM dual    --向下取整  显示的是12

SELECT * FROM student s WHERE TRUNC(s.birthday)=to_date('20130513','yyyymmdd') --取整的实例

-- 过滤空值函数
SELECT s.sname, NVL(s.sage, '1') FROM student s  --sage 为空的那一项显示的是1
--nvl函数传入的两个参数必须是同一类型
--nvl 2 没有参数类型限制了
SELECT s.sname, nvl2(s.sage, 'aa', 'bb') FROM student s  --sage不为空的显示 'aa',为空显示'bb'

SELECT AVG(s.sage) FROM student s --求平均值,去掉了年龄为空的值进行计算
SELECT AVG(NVL(s.sage, 0)) FROM student s  --没有去掉年龄为空的值进行计算

SELECT 5 + NULL FROM dual  --任何数加null都等于null

SELECT LOWER('aBc') FROM dual  --大写
SELECT UPPER('aBc') FROM dual  --小写

SELECT CONCAT('aaa','bbb') FROM dual -- 连接两个字符串 

SELECT wm_concat(s.sname) FROM student s GROUP BY s.cid  --名字都显示在一行里面了
---列转行函数(也属于分组函数)  ,一列转换成一行显示,可以结合分组使用
原文地址:https://www.cnblogs.com/zuo72/p/8017548.html