您的位置:首页 > 科技 > IT业 > SQL常用函数总结(三)

SQL常用函数总结(三)

2024/12/24 9:41:31 来源:https://blog.csdn.net/zfyzfw/article/details/139195639  浏览:    关键词:SQL常用函数总结(三)

三、单行函数

1.从函数定义角度,分成内置函数、自定义函数

2.从实现功能分为:数值函数、字符串函数、日期和时间函数、流程控制函数等等

3.分为单行函数、聚合函数(分组函数)

单行函数特点:操作数据对象。接受参数返回的一个结果,只对一行进行变换,每行返回一个结果可以嵌套,参数可以是一列或一个值。

1.数值函数 

ABS(x) 返回绝对值;   

SIGN(x) 返回x的符号

PI()圆周率的值;       

CEIL(x),CEILING(x)返回大于或等于某个值的最小整数

FLOOR(x)小于或等于某个值的最大整数;

LEAST(x1,x2,x3…)返回列表中的最小值;GREATEST(x1,x2,x3…)返回列表中的最大值

MOD(x,y) 返回x除以y后的余数

RAND() 返回0~1的随机值

RAND(x) 返回0~1随机值,x的值作为种子值,相同的x值产生相同的随机数

ROUND(x,c)四舍五入,截断操作 c为保留小数位数,为0时可省略不写

TRUNCATE(x,c)将数字x截断为c位小数,没有四舍五入直接截断

SQRT(x)返回x的平方根;x为负值时,返回null

2.三角函数

SIN(x)返回x的正弦值,x为弧度值

ASIN(x)返回x的反正弦值:正弦为x的值,若x不属于-1到1,返回null

COS(x)返回x的余弦值,x为弧度值

ACOS(x)返回x的反余弦值:余弦为x的值,若x不属于-1到1,返回null

TAN(x)返回x的正切值,x为弧度值

ATAN(x)返回x的反正切值:正切为x的值

ATAN2(m,n)返回两个参数的反正切值

COT(x) x的余切值,x为弧度值

角度于与弧度互换函数

RADIANS(x) 角度——>弧度,x为角度

DEGREES(x)弧度——>角度,x为弧度

3.指数和对数函数

POW(x,c),POWER(x,c)表示x的c次幂

EXP(c) 表示e的c次幂

LN(a)表示ln a

LOGa(N)表示logaN

4.进制间的转换

BIN()转二进制

HEX()转十六进制

OCT()转八进制

CONV(x,y,z)将x从y进制转到z进制

4.字符串函数

ASCII(s)返回字符串s的第一个字符的ASCII码值

CHAR_LENGTH(s)返回字符串s的字符数

LENGTH(s)返回字符串s的字节数,与字符集有关,一个汉字占3个字节,为一个字符

CONCAT(s1,s2,…,sn)连接s1,s2,…,sn为一个字符串

CONCAT_WS(x,s1,s2,…,sn)同上,但每个字符串之间要加上x

INSERT(str,idx,len,replacestr)将str从第idx位置开始,len个字符长的子串替换为replacestr

REPLACE(str,a,b)用b替换str中所有出现的a

UPPER(s)或者UCASE(s) 将s所有字母转成大写字母

LOWER(s)或者LCASE(s)将s所有字母转成小写字母

LEFT(str,n)返回str最左边的n个字符

RIGHT(str,n)返回str最右边的n个字符

LPAD(str,len,pad)用pad对str最左边进行填充,直到str的长度为len个字符

RPAD(str,len,pad)用pad对str最右边进行填充,直到str的长度为len个字符

REPEAT(x,c)重复x,4次写成一串

STRCMP(s1,s2)比较s1和s2的ASCII码哪个大

SUBSTR(x,a,b)返回x字符串的第a个起b个字符

LOCATE(a,x)返回a首次在x中出现的位置

ELT(m,s1,s2,…,sn)返回指定位置字符串,例如m=1则返回s1

FIELD(s,s1,s2,…,sn)返回s在列表中第一次出现的位置

FIND_IN_SET(s1,s2)返回s1在s2首先出现的位置

REVERSE(s)返回s反转后的字符串

NULLIF(value1,value2)比较两个字符串,若相等,返回null,否则返回value1

4.日期和时间函数

4.1获取日期和时间

CURDATE()、CURRENT_DATE()返回当前日期

CURTIME()返回当前时间

NOW()返回当前日期+时间

UTC_DATE()、UTC_TIME() utc世界标准,相差8小时,是我们的时间-8hour

4.2日期与时间戳的转换

UNIX_TIMESTAMP()日期转为时间戳

FROM_UNIXTIME()时间戳转为日期

4.3获取月份、星期、星期数、天数等函数

YEAR(date) 返回date对应的年

MONTH(date)返回date对应的月

DAY(date)返回date对应的日

HOUR(time)返回time对应的小时

MINUTE(time)返回time对应的分钟

SECOND(time)返回time对应的秒数

MONTHNAME(date)返回对应的月份:January,…

DAYNAME(date)返回星期几:MONDAY,…

WEEKDAY(date)返回周几,0是周一,…6是周日

QUARTER(date)返回日期对应的季度1~4

WEEK(date)返回日期是一年中的第几周

WEEKOFYEAR(date)返回日期是一年中的第几周

DAYOFYEAR(date)返回日期是一年中的第几天

DAYOFMONTH(date)返回日期是所在月份中的第几天

DAYOFWEEK(date)返回周几,周日是1,周一是2

4.4日期的操作函数

EXTRACT(type FROM  date) 返回指定日期中的特定部分,type为返回的值

type可以是SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER、YEAR、MINUTE_SECOND

4.5时间和秒钟转换的函数

TIME_TO_SEC()时间转换为秒数

SEC_TO_TIME()秒数转换为时间

4.6计算日期和时间的函数

DATE_ADD(datetime,INTERVAL,expr type)加上一段时间的日期

此函数情况下,expr为正数时候则为加,为负数时则为减,type为year,minute,second之类的

DATE_SUB(datetime,INTERVAL,expr type)减去一段时间的日期

ADDTIME(time1,time2)在time1上加上time2的时间,time为一个数字时表示秒,可为负值,相当于减去

SUBTIME(time1,time2)在time1上减去time2的时间,time为一个数字时表示秒,可为负值,相当于加上

DATEDIFF(date1,date2)返回date1,date2日期间隔天数

TIMEDIFF(time1,time2)返回time1,time2时间间隔

FROM_DAYS(N)返回从0000年1月1日起,N天以后的日期

TO_DAYS(date)返回日期date距离0000年1月1日的天数

LAST_DAY(date)返回date所在月份的最后一天的日期

MAKEDATE(year,n)针对给定年份和所在年份中的天数返回一个日期

MAKETIME(hour,minute,second)将给定的小时、分钟、秒组合成时间返回

PERIOD_ADD(time,n)返回time加上n后的时间

4.7日期的格式化与解析

格式化:日期——>字符串

解析:字符串——>日期

!此时说的是日期的显示格式化和解析,之前说的都是隐式格式化或解析

DATE_FORMAT(日期,'%Y-%M-%D')后者还可以是其他格式

STR_TO_DATE(字符串,'%Y-%M-%D %h-%m-%s %W %w')后者格式可自行选定

GET_FORMAT(date,'USA')获得date的USA日期格式,USA可换成想要知道的其他国家格式

5.流程控制函数

IF(VALUE,VALUE1,VALUE2)如果满足条件VALUE,则值为VALUE1,否则为VALUE2

IFNULL(VALUE1,VALUE1)如果VALUE1为null,则用VALUE2替代

CASE WHEN…条件1 THEN…value1

           WHEN…条件2 THEN…value2

            ELSE…value3  END

若满足条件1则为值value1,满足条件2,则为value2,其他情况则为value3

CASE…value  WHEN…THEN…

                        WHEN…THEN…

                         ELSE…END

若value等于值1则…,等于值2则…,其他情况则…结束

FORMAT(value,n)保留value的n位小数,若n小于等于0,则只保留整数部分,有四舍五入。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com