mysql函数一

本文全面概述了信息技术领域的各个方面,包括但不限于前端开发、后端开发、移动开发、游戏开发、大数据开发、开发工具、嵌入式硬件、嵌入式电路知识、嵌入式开发环境、音视频基础、音视频直播流媒体、图像处理AR特效、AI音视频处理、测试、基础运维、DevOps、操作系统、云计算厂商、自然语言处理、区块链、隐私计算、文档协作与知识管理、版本控制、项目管理与协作工具、有监督学习、无监督学习、半监督学习、强化学习、数据安全、数据挖掘、数据结构、算法、非IT技术、自动推理、人工神经网络与计算、自动驾驶、数据分析、数据工程、程序设计方法、数据库理论、代码管理工具。内容涵盖了从基础理论到实际应用的广泛知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数学函数
ABS(X)返回x的绝对值
CEIL(X),CEILING(X)返回大于或等于x的最小整数
FLOOR(X)返回小于或等于x的最大整数
RAND()返回0~1的随机数
RAND(X)返回0~1的随机数,x值相同时返回的随机数相同
PI()返回圆周率(3.141593)
ROUND(X)返回离x最近的整数
ROUND(X,Y)保留x小数点后y位的值,但截断时要进行四舍五入
TRUNCATE(X,Y)返回数值x保留到小数点后y位的值,直接进行截断,不进行四舍五入
sign(x)返回x的符号,x是负数返回-1,是0返回0,是正数返回1
POW(X,Y),POWER(X,Y)返回x的y次方
SQRT(X)返回x的平方根
EXP(X)返回e的x次方
MOD(X,Y)返回x除以y以后的余数
LOG(X)返回自然对数(以e为底的对数)
LOG10(X)返回以10为底的对数

二、字符串函数
char_length(s)返回字符串s的字符数
length(s)返回字符串s的长度,长度指的是字节数。
例1在gb2312下一个汉字表示两个字节:
mysql> select char_length('你好'),length('你好');
+---------------------+----------------+
| char_length('你好') | length('你好') |
+---------------------+----------------+
|                   2 |              4 |
+---------------------+----------------+
1 row in set (0.00 sec)
例2在unicode下1个汉字表示三个字节:
mysql> select char_length('你好'),length('你好');
+-----------------------+------------------+
| char_length('你好')   | length('你好')   |
+-----------------------+------------------+
|                     2 |                6 |
+-----------------------+------------------+
1 row in set (0.00 sec)

concat(s1,s2,...)将字符串s1,s2等多个字符串合并为一个字符串,如果有字符串为null则结果为null
concat_ws(x,s1,s2,...)同concat(s1,s2,...)函数,但是每个字符串之间要加上x,如果有字符串为null,则忽略null
mysql> select concat(a,'ccc',b) from pet3;
+-------------------+
| concat(a,'ccc',b) |
+-------------------+
| 11cccdsf          |
| 12cccdsf          |
+-------------------+
2 rows in set (0.00 sec)
insert(s1,x,len,s2)将字符串s2替换s1的x位置开始长度为len的字符串
例:
mysql> select insert('lmnopqrs',2,2,'abcdefg');
+----------------------------------+
| insert('lmnopqrs',2,2,'abcdefg') |
+----------------------------------+
| labcdefgopqrs                    |
+----------------------------------+
1 row in set (0.00 sec)

upper(s),ucase(s)将字符串s的所有字母都变成大写字母
lower(s),lcase(s)将字符串s的所有字母都变成小写字母
left(s,n)返回字符串s的前n个字符
right(s,n)返回字符串s的后n个字符
lpad(s1,len,s2)字符串s2来填充s1的开始处,使字符串长度达到len
rpad(s1,len,s2)字符串s2来填充s1的结尾处,使字符串长度达到len
例:
mysql> select lpad('aBC',3,'def');
+---------------------+
| lpad('aBC',3,'def') |
+---------------------+
| aBC                 |
+---------------------+
1 row in set (0.00 sec)

例:
mysql> select lpad('aBC',10,'def');
+----------------------+
| lpad('aBC',10,'def') |
+----------------------+
| defdefdaBC           |
+----------------------+
1 row in set (0.00 sec)

ltrim(s)去掉字符串s开始处的空格
rtrim(s)去掉字符串s结尾处的空格
trim(s)去掉字符串s开始处和结尾处的空格
trim(s1 from s)去掉字符串s中开始处和结尾处的字符串s1
例:
mysql> select trim('ab' from 'ababcccccabccccab');
+-------------------------------------+
| trim('ab' from 'ababcccccabccccab') |
+-------------------------------------+
| cccccabcccc                         |
+-------------------------------------+
1 row in set (0.00 sec)
repeat(s,n)将字符串s重复n次
space(n)返回n个空格
replace(s,s1,s2)用字符串s2替代字符串s中的字符串s1
strcmp(s1,s2)比较字符串s1和s2,小于返回-1,相等返回0,大于返回1
substring(s,n,len)获取从字符串s中的第n个位置开始长度为len的字符串
mid(s,n,len)同subtring(s,n,len)
locate(s1,s),position(s1 in s)从字符串s中获取s1的开始位置
instr(s,s1)从字符串s中获取s1的开始位置
reverse(s)将字符串s的顺序反过来
elt(n,s1,s2,...)返回第n个字符串
export_set(x,s1,s2)
field(s,s1,s2,...)返回第一个与字符串s匹配的字符串的位置,如果没有则返回0
find_in_set(s1,s2)返回在字符串s2与s1匹配的字符串的位置,s2必须以逗号分隔
例:
mysql> select find_in_set('bc','a,bc,d,e,b');
+--------------------------------+
| find_in_set('bc','a,bc,d,e,b') |
+--------------------------------+
|                              2 |
+--------------------------------+
1 row in set (0.00 sec)
make_set(x,s1,s2,...)按x的二进制数从s1,s2,...,sn中选取字符串,1表示选取,0表示不选取,第一个字符串对应二进制最低的一位以此类推
例:
mysql> select make_set(1|4,'a','b','c','de');
+--------------------------------+
| make_set(1|4,'a','b','c','de') |
+--------------------------------+
| a,c                            |
+--------------------------------+
1 row in set (0.03 sec)
注:1|4得到二进制为101,右边第一个1对应a,0对应b,左边第一个1对应c
例:
mysql> select make_set(4,'a','b','c','de');
+------------------------------+
| make_set(4,'a','b','c','de') |
+------------------------------+
| c                            |
+------------------------------+
1 row in set (0.00 sec)
注:4得到二进制100,1对应c

三、日期和时间函数
curdate(),current()_date()返回当前日期
curtime(),current_time()返回当前时间
now(),current_timestamp(),localtime(),sysdate(),localtimestamp()返回当前日期和时间
unix_timestamp()以unix时间戳的形式返回当前时间
unix_timestamp(d)将日期时间d以unix时间戳的形式返回
from_unixtime(d)把unix时间戳的时间转化为普通格式的时间
utc_date()返回utc日期,utc为世界统一时间
utc_time()返回utc时间
month(d)返回日期d中的月份值,范围是1~12
monthname(d)返回日期d中的月份名称,如january
dayname(d)返回日期d是星期几,如Monday,Tuesday等
dayofweek(d)返回日期d是星期几,范围1~7,1表示星期日,2表示星期一等
weekday(d)返回日期d是星期几,范围0~6,0表示星期一,1表示星期二等
week(d,n)计算日期d是本年的第几个星期,n表示一周的第一天是星期几,0表示星期日,范围是0~53
weekofyear(d)计算日期d是本年的第几个星期,范围是1~53
dayofyear(d)计算日期d是本年的第几天
dayofmonth(d)计算日期d是本月的第几天
year(d)返回日期d中的年份值
quarter(d)返回日期d是第几季度,范围是1~4
hour(t)返回时间t中的小时值
minute(t)返回时间t中的分钟值
second(t)返回时间t中的秒钟值
extract(type from d)从日期d中获取指定的值,type指定返回的值,如year,month,day,hour,minute,second等
例:
mysql> select extract(year from now());
+--------------------------+
| extract(year from now()) |
+--------------------------+
|                     2015 |
+--------------------------+
1 row in set (0.00 sec)

time_to_sec(t)将时间t转化为秒
sec_to_time(s)将以秒为单位的时间s转换为时分秒的格式
to_days(d)计算日期d与0000年1月1日的天数
from_days(n)计算从0000年1月1日开始,n天后的日期,以上面的互反
datediff(d1,d2)计算日期d1~d2之间相隔的天数
adddate(d,n)计算起始日期d加上n天的日期
adddate(d,interval expr type)计算起始日期d加上一个时间段后的日期
date_add(d,interval expr type)同上
上面的interval expr type表示
expr表达式形式   类型   含义
YY	year	年
MM	month	月
DD	day	日
hh	hour	时
mm	minute	分
ss	second	秒
YY和MM之间用任意符号隔开	year_month	年和月
DD和hh之间用任意符号隔开	day_hour	日和小时
DD和mm之间用任意符号隔开	day_minute	日和分钟
DD和ss之间用任意符号隔开	day_second	日和秒钟
hh和mm之间用任意符号隔开	hour_minute	时和分
hh和ss之间用任意符号隔开	hour_second	时和秒
mm和ss之间用任意符号隔开	minute_second	分和秒
注:不能组合使用
例:
mysql> select adddate('2009-05-06',interval '-1 -1' year_month);//查询一年零一月前的日期,可以用负数
+---------------------------------------------------+
| adddate('2009-05-06',interval '-1 -1' year_month) |
+---------------------------------------------------+
| 2008-04-06                                        |
+---------------------------------------------------+
1 row in set (0.00 sec)

subdate(d,n)计算起始日期d减去n天的日期
subdate(d,interval expr type)计算起始日期d减去一个时间段后的日期
addtime(t,n)计算起始时间t加上n秒的时间
subtime(t,n)计算起始时间t减去n秒的时间

date_fromat(d,f)按照下表的表达式f的要求显示日期d
time_fromt(t,f)按照下表的表达式f的要求显示时间t
日期时间格式:
符号	含义	取值示例
%Y	以4位数字表示年份	2008,2009等
%y	以2位数字表示年份	98,99等
%m	以2位数字表示月份	01,02,...,12
%c	以数字表示月份	1,2,...,12
%M	月份的英文名	January,February,...,December
%b	月份的英文缩写	Jan,Feb,..,Dec
%U	表示星期数,其中sunday是星期的第一天	00~52
%u	表示星期数,其中monday是星期的第一天	00~52
%j	以3位数字表示年中的天数	001~366
%d	以2位数字表示月中的几号	01,02,...,31
%e	以数字表示月中的几号	1,2,...,31
%D	以英文后缀表示月中的几号	1st,2nd,...,
%w	以数字的形式表示星期几	0表示sunday,1表示Monday,...
%W	星期几的英文名	Monday,...,Sunday
%a	星期几的英文缩写	Mon,...,Sun
%T	24小时制的时间形式	00:00:00~23:59:59
%r	12小时制的时间形式	12:00:00AM~11:59:59PM
%p	上午(AM)或下午(PM)	AM或PM
%k	以数字表示24小时	0,1,...,23
%l	以数字表示12小时	1,2,...,12
%H	以2位数表示24小时	00,01,...,23
%h,%I	以2位数表示12小时	01,02,...,12
%i	以2位数表示分	00,01,...,59
%S,%s	以2位数表示时	00,01,...,59
%%	标识符%	%
例:下面用“Jan 1st 1986”的形式显示日期
mysql> select date_format('2009-10-25','%b %D %Y');
+--------------------------------------+
| date_format('2009-10-25','%b %D %Y') |
+--------------------------------------+
| Oct 25th 2009                        |
+--------------------------------------+
1 row in set (0.05 sec)

get_fromat(type,s)根据字符串s获取type类型数据的显示格式
图.get_fromat()函数返回的格式字符串格式:
函数	返回的格式字符串	
GET_FORMAT(DATE,'EUR')	'%d.%m.%Y'	
GET_FORMAT(DATE,'USA')	'%m.%d.%Y'
GET_FORMAT(DATE,'JIS')	'%Y-%m-%d'
GET_FORMAT(DATE,'ISO')	'%Y-%m-%d'
GET_FORMAT(DATE,'INTERNAL')	'%Y%m%d'
GET_FORMAT(DATETIME,'EUR')	'%Y-%m-%d-%H.%i.%s'
GET_FORMAT(DATETIME,'USA')	'%Y-%m-%d-%H.%i.%s'
GET_FORMAT(DATETIME,'JIS')	'%Y-%m-%d-%H:%i:%s'
GET_FORMAT(DATETIME,'ISO')	'%Y-%m-%d-%H:%i:%s'
GET_FORMAT(DATETIME,'INTERNAL')	'%Y%m%d%H%i%s'
GET_FORMAT(TIME,'EUR')	'%H.%i.%s'
GET_FORMAT(TIME,'USA')	'%H:%i:%s %p'
GET_FORMAT(TIME,'JIS')	'%H:%i:%s'
GET_FORMAT(TIME,'ISO')	'%H:%i:%s'
GET_FORMAT(TIME,'INTERNAL')	'%H%i%s'
例:
mysql> select get_format(time,'USA');
+------------------------+
| get_format(time,'USA') |
+------------------------+
| %h:%i:%s %p            |
+------------------------+
1 row in set (0.03 sec)
注:GET_FORMAT()函数一般用来为DATETIME类型的数据提供格式字符串,如:
DATE_FORMAT('2014-10-11 23:17:28',GET_FORMAT(DATE,'USA'))函数返回的结果为10.11.2014。这是因为使用GET_FORMAT(DATE,'USA')函数将日期的显示格式设置为了$m.%d.%Y。另外datetime类型的数据格式化没有时间则时间部分为0时0分0秒,没有日期部分则为0年0月0日

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值