转换函数
1.TO_CHAR(日期|数字|字段,格式字符串)
TO_CHAR(日期|数字|字段,格式字符串)
截取SYSDATE中的年:
SELECT TO_CHAR(SYSDATE,'YYYY')
FROM DUAL
--2023
SELECT TO_CHAR(SYSDATE,'YYY')
FROM DUAL
--023
SELECT TO_CHAR(SYSDATE,'YY')
FROM DUAL
--23
月,日,依照上述。
若想返回中文的月份:
SELECT TO_CHAR(SYSDATE,'MON')
FROM DUAL
--返回中文的月份:【2月】
若第二位参数不写,则返回六位数的日期,如:14-2月-23
备注:
SELECT TO_CHAR(SYSDATE,'D')
FROM DUAL
--同下
--SELECT
-- TO_CHAR(SYSDATE,'DAY')
--FROM EMP
--此时返回内容为当前的星期
SELECT TO_CHAR(SYSDATE,'MON')
FROM DUAL
--此时返回内容为中文月份。
SELECT TO_CHAR(SYSDATE,'DDD')
FROM DUAL
--此时返回内容为今天是当年的第几天。
SELECT TO_CHAR(SYSDATE,'W')
FROM DUAL
--代表当月的第几周。
SELECT TO_CHAR(SYSDATE,'WW')
FROM DUAL
--代表当年的第几周。
SELECT TO_CHAR(SYSDATE,'Q')
FROM DUAL
--代表目前在当年的季度。
当用于截取时间时:
SELECT TO_CHAR(STSDATE,'HH')
FROM DUAL
--此时截取的时间为12小时制,同下述代码相同
SELECT TO_CHAR(STSDATE,'HH12')
FROM DUAL
--若想特别强调24小时制,则使用‘HH24’
SELECT TO_CHAR(STSDATE,'YYYY-MM-DD HH24:MI:SS')
FROM DUAL
备注:TO_CHAR类型转换之后为字符串。
TO_DATE
将字符串格式转换为日期格式。
SELECT * FROM EMP
WHERE TO_DATE('198111231','YYYYMMDD');
CAST 数据类型装换
CAST(字符串 AS 数据类型)
SELECT SAL
CAST(SAL AS VARCHAR(20))
FROM EMP
TO_NUMBER
语法:TO_NUMBER(字符串,字符串格式的数字)
SELECT
TP_NUMBER(100)
FROM DUAL
TO_NULTI_BYTE
半角转全角
SELECT
TO_MULTI_BYTE('QWERT')
FROM
DUAL
--半角转全角
SELECT
TO_SINGLE_BYTE('QWERT')
FROM
DUAL
--全角转半角
数据类型
主要分为三大类:字符类型,数值类型,日期类型
字符类型
CHAR(N)
按照字节存储,且是定向字符串。
CHAR的最大长度为2000.即N的最大值为2000
如果长度冗余,则自动补充空格。
VARCHAR(N)
最多存储2000字节,如果长度过多,*不会*补充空格。
VARCHAR2(N)
最多存储4000字节,冗余*不会*补充空格。
NCHAR(N)
最多存储2000.按照字符存储,冗余补充空格。
NVARCHAR(2)
最多存储4000,冗余*不会*补充。
数值类型
NUMBER(总长度,小数)
最大不可超过38位。
如果第二个参数不写,则默认四舍五入。
NUMBER(10,2)
--总长度10,小数部分为2.
INT
整数,38位最高。
日期类型
DATE
最常见的日期类型。
TIMESTAMP
默认为6位日期。最大9位。
大文本类型
LONG
可变长度字符串类型。最多可存储2GB
BLOB
最多可存储4GB的数据+数据块大小
CLOB
4GB
条件函数
CASE WHEN
语法:
CASE WHEN 条件1 AND|OR 条件2 THEN 返回值
WHEN 条件3 AND|OR 条件4 THEN 返回值
ELSE 返回值
END;
CASE 字符串
WHEN 字符串状态1 AND|OR 字符串状态2 THEN 返回值
WHEN 字符串状态3 AND|OR 字符串状态4 THEN 返回值
ELSE 返回值
END;
--做等值比较
--查询部门编号地址,如果是10则返回财务部,
--如果部门编号是20,则返回运营部,
--如果编号30,返回销售部。
--其他返回战略部。
DECODE
ORICAL独有函数
语法:DECODE(表达式,值1,返回值1,值2,返回值2.......值n,返回值n,返回值N+1)
NVL
NVL(字符串,如果第一个参数为空输出此项。)
此项防止空值不可参与计算。
NVL(COMM,'0')
NVL2
NVL2(空值对应的输出内容,非空值对应的输出内容)
GREATEST
返回参数的最大值
SELECT
GREATEST ('2','3','11')
FROM DUAL
参数里的数值必须保持数值类型一致。
NULLIF
若两个参数相同,返回空值,
两个参数不同,返回第一个参数,
SELECT
NULLIF('8','6')
FROM DUAL;
COALESCE
返回参数里从左第一个不为空的值。
SELECT COALESCE(NULL,'1'NULL)
FROM DUAL;
聚合函数
COUNT
求有多少条数据。
SELECT
COUNT(*)
FROM EMP
--COUNT(*)与COUNT(1)相同。
--求奖金有多少条数据
SELECT
COUNT(COMM)
FROM EMP
MAX
返回员工最高工资
SELECT
MAX(SAL)
FROM EMP
MIN
最小值
SELECT
MIN(SAL)
FROM EMP
SUM
求和
SELECET
SUN(SAL)
FROM EMP
AVG
求平均值
SELECT
AVG(SAL)
FROM EMP
语法:
SELLECT DISTINCT
*
FROM TABLE
WHERE
GROUP BY
--分组
HAVING
--二次筛选
ORDER BY
-排序
以上格式,执行顺序应为:
FROM→WHERE→GROU BY→SELECT→HAVING→ORDER BY
GROUP BY+列
分组,如部门有10,20,30三个分类,
进行GROUP BY 部门 之后,内容应为三条:
第一条:10,第二条:20,第三条:30
HAVING
HAVING出现的唯一理由是:GROUP BU 无法处理聚合函数。
--查询每个部门有奖金的人数和无奖金的人数(在EMP表中)
SELECT
CASA WHEN COMM>0 THEN 'Y'
ELSE 'N' END,
FROM EMP
DESC
降序
ASC
升序
ORDER BY 默认为升序。
用法具体为:ORDER BY ASC