前言
今天学习了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. 总结
这次写的这篇博客还有一些函数的实例没有写到,希望大家谅解,以后我会将它补全的。