关于SQL语言中的函数,你该了解这些

前言

今天学习了SQL语言中的函数,感觉还真的有点多,于是,就打算将它做成一个表格发表出来,这样既可以加深我对它的理解,也可帮助大家对于它的学习。

1.SQL语言的函数用法

函数名 用法
数值型函数
ABS(n) 返回n的绝对值
CEIL(n) 返回大于或等于n的最小整数
FLOOR(n) 返回等于或小于n的最小整数
ROUND(n,m) 按照m表明的小数点前后位置取四舍五入,m必须为整数
TRUNC(n) 与ROUND类似,但采用四舍五入,当m省略时,表明不要小数位
MOD(m,n) 返回m除以n的余数
EXP(n) e的n次方
SQRT(n) n的平方根
LN(n) n的自然对数
LOG(n) n的以10为底的对象
POWER(n,m) n的m次方
字符型函数
CONCAT(s1,s2) 对字符串s1和s2进行连接
SUBSTR(s,m[,n]) 取子串函数,该函数从s串第m个字符起,取长度为n的一个子串。如果省略n,一直取到s串的末尾。
LENGTH(s) 返回字符串s的长度(字符数)
LENGTHB(s) 返回字符串s的字节数
LOWER(s) 将字符串s中所有字母变为小写
UPPER(s) 将字符串s中的所有字母全变为大写
REPLACE(s1,s2,s3) 用s3代替s1中的s2
日期型函数
SYSDATE 返回当前日期及时间,函数没有参数
MONTHS_BETWEEN(d1,d2) 函数返回d1和d2两个日期之间的月数
NEXT_DAY(d,s) 返回日期d之后的第一个由s指定的星期几的日期
ROUND(d[,fmt]) 该函数用于返回日期时间的四舍五入结果。如果fmt指定年度,则以7月1日为分界线。如果fmt指定月,则以16日为分界线。如果fmt指定天,则以中午12:00为分界线
TRUNC(d[,fmt]) 该函数用于截取日期时间数据,如果fmt指定年度,则结果为本年度的1月1日。如果fmt指定月,则结果为本月1日
TO_CHAR(d,fmt) 将d所表示的日期型数据转换成fmt所指定的内容及格式
TO_DATE(s,fmt) 将CHAR或VARCHAR2类型的字符串s转换成DATE类型的数据
TO_NUMBER(s,fmt) 将CHAR或VARCHAR2类型的字符串s转换成对应的数值型数据
其他单行函数
NVT(expr1,expr2) 当expr1值不空时,返回expr1的值;当expr1的值为空时,函数返回expr2的值
NVT2(expr1,expr2,expr3) NVT2是Oracle9i新增加的函数,该函也用于处理NULL值,如果expr1的值不是NULL,则返回expr2的值。如果expr1的值为NULL,则返回expr3的值
USER 返回当前用户名
USERENV(option) 返回当前会话周期的一些信息
组函数
DISTNCT 该选项使得组函数只考虑不同值(去掉重复值)
ALL 该选项使得组函数考虑组中所有值(包括重复值)
AVG([{DISTINCT\ALL}]"<“N)”>") 其中N是一个数字型的表达式.,此函数返回表达式N的平均值
COUNT(X) 其中X是一个表达式,此函数返回查询中的行数。“*”是特殊量,表示统计结果包括所有行,不管是否是NULL
MAX(X) 返回表达式X的最大值
MIN(X) 返回表达式X的最小值
SUM(X) 返回表达式X的和

2.SQL函数用法事例

(首先得安装Oracl)
我们按住win+R,在弹出来的窗口中输入cmd,来到命令窗口
然后输入sqlplus
输入用户名和密码,来到这个界面
在这里插入图片描述

2.1 数值型函数

1.ABS(n)函数

SELECT ABS(-100) FROM DUAL;

在这里插入图片描述
2.CEIL(n)函数

SELECT CEIL(2.3) FROM DUAL;
SELECT CEIL(-2.3) FROM DUAL;

在这里插入图片描述
3.FLOOR(n)函数

SELECT FLOOR(-2.3) FROM DUAL;
SELECT FLOOR(2.3) FROM DUAL;

在这里插入图片描述
4.ROUND(n,m)函数

SELECT ROUND(3.1415926,4) FROM DUAL;

在这里插入图片描述
5.TRUNC(n,m)函数

SELECT TRUNC(3.1415526,3) FROM DUAL;
SELECT TRUNC(3.5415526) FROM DUAL;

在这里插入图片描述

扫描二维码关注公众号,回复: 10590932 查看本文章
2.2字符型函数

1.CONCAT(s1,s2)函数

SELECT CONCAT('abc','efg') FROM DUAL;

在这里插入图片描述
2.SUBSTR(s,m[,n])函数

SELECT SUBSTR('abcefgh',3) FROM DUAL;
SELECT SUBSTR('abcefgh',3,2) FROM DUAL;

在这里插入图片描述
3.LENGTH(s)和LENGTHB(s)函数

SELECT LENGTH('abc') FROM DUAL;
SELECT LENGTH('中国') FROM DUAL;
SELECT LENGTHB('中国') FROM DUAL;
SELECT LENGTHB('abc') FROM DUAL;

在这里插入图片描述
4.LOWER(s)和UPPER(s)函数

SELECT LOWER('ABCd') FROM DUAL;
SELECT UPPER('ABCd') FROM DUAL;

在这里插入图片描述
REPLACE(s1,s2,s3)函数

SELECT REPLACE('ABCd','d','D') FROM DUAL;

在这里插入图片描述

2.3 日期型函数

1.SYSDATE

SELECT SYSDATE FROM DUAL;
-- 2020年3月19号

在这里插入图片描述
2.MONTHS_BETWEEN(d1,d2)函数

SELECT MONTHS_BETWEEN(TO_DATE('20201201','yyyymmdd'),TO_DATE('20200201','yyyymmdd')) FROM DUAL;
SELECT MONTHS_BETWEEN(TO_DATE('20201201','yyyymmdd'),TO_DATE('20200211','yyyymmdd')) FROM DUAL;

在这里插入图片描述
3.NEXT_DAY(d,s)函数

 SELECT NEXT_DAY(TO_DATE('20200319','yyyymmdd'),3) FROM DUAL;
 -- 下周星期三的日期

在这里插入图片描述
4.ROUND(d[,fmt])函数

SELECT ROUND(TO_DATE('20200319','yyyymmdd'),'yy') FROM DUAL;
SELECT ROUND(TO_DATE('20200719','yyyymmdd'),'yy') FROM DUAL;
SELECT ROUND(TO_DATE('20200719','yyyymmdd'),'mm') FROM DUAL;
SELECT ROUND(TO_DATE('20200715','yyyymmdd'),'mm') FROM DUAL;

在这里插入图片描述
5.TRUNC(d[,fmt])函数

SELECT TRUNC(TO_DATE('20200715','yyyymmdd'),'mm') FROM DUAL;
SELECT TRUNC(TO_DATE('20200715','yyyymmdd'),'yy') FROM DUAL;

在这里插入图片描述

2.4 类型转换函数

1.TO_CHAR(d,fmt)函数

SELECT TO_CHAR(TO_DATE('20200715','yyyymmdd'),'yyyy/mm/dd') FROM DUAL;

在这里插入图片描述
2.TO_NUMBER(s,fmt)函数

SELECT TO_NUMBER('202003.19','999999.99') FROM DUAL;

在这里插入图片描述

2.5 其他单行函数

USER

SELECT USER FROM DUAL;

在这里插入图片描述

3. 总结

这次写的这篇博客还有一些函数的实例没有写到,希望大家谅解,以后我会将它补全的。

发布了51 篇原创文章 · 获赞 299 · 访问量 9173

猜你喜欢

转载自blog.csdn.net/qq_45404396/article/details/104966178