2023-02-14

转换函数

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

DDL语句

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容