[转帖]mysql8.0 MySQL函数
PART1. MySQL函数介绍
函数表示对输入参数值返回一个具有特定关系的值,MySQL提供了大量丰富的函数,在进行数据库管理以及数据的查询和操作时将会经常用到各种函数。各类函数从功能方面主要分为数学函数,字符串函数、日期和时间函数、条件判断函数、系统信息函数和加密函数等其他函数。
PART2. 数学函数
绝对值函数、三角函数(正弦函数、余弦函数、正切函数、余切函数等)、对数函数、随机数函数等。
1. 绝对值函数ABS(x)和返回圆周率的函数PI()
ABS(X)返回X的绝对值。
PI()返回圆周率π的值。默认显示小数位是6位。
2. 平方根函数SQRT(x)和求余函数MOD(x,y)
SQRT(x)返回非负数x的二次方根。
MOD(x,y)返回x被y除后的余数,MOD()对于带有小数部分的数值也起作用,它返回除法运算后的精确余数。
3. 获取整数的函数CEIL(x)、CEILING(x)和FLOOR(x)
CEIL(x)和CEILING(x)的意义相同,返回不小于x的最小整数值,返回值转化为一个BIGINT。
FLOOR(x)返回不大于x的最大整数值,返回值转化为一个BIGINT。
4. 获取随机数的函数RAND()和RAND(x)
RAND(x) 返回一个随即浮点值v,范围在0到1之间(0 <= v <= 1.0)。若已指定一个整数参数x,则它被当作种子值,用来产生重复序列。
可以看到,不带参数的RAND()每次产生的随机数值是不同的。
可以看到,当RAND(x)的参数相同时,将产生相同的随机数,不同的x产生的随机数值不同。
5. 函数ROUND(x)、ROUND(x,y)和TRUNCATE(x,y)
ROUND(x)返回最接近于参数x的整数,对x值进行四舍五入。
可以看到,四舍五入处理之后,只保留了各个值的整数部分。
ROUND(x,y) 返回最接近于参数x的数,其值保留到小数点后面y位,若y为负值,则将保留x值到小数点左边y位。
TRUNCATE(x,y)返回被舍去至小数点后y位的数字x。若y的值为0,则结果不带小数点或不带小数部分。若y设为负数,则截去(归零)x小数点左起第y位开始后面所有低位的值。
注意: ROUND(x,y) 函数在截取值的时候四舍五入,而TRUNCATE(x,y)直接截取值,并不进行四舍五入。
6. 符号函数SIGN(x)
SIGN(x)返回参数的符号,x的值位负、零或正时返回结果依次为-1、0或1。
7. 幂运算函数POW(x,y)、POWER(x,y)和EXP(x)
POW(x,y) 或者 POWER(x,y)函数返回的x的y次乘方的结果值。
EXP(x)返回e的x乘方后的值。
8. 对数运算函数LOG(x) 和 LOG10(x)
LOG(x) 返回x的自然对数,x相对于基数e的对数。
对数定义域不能为负数,因此LOG(-3)返回结果为NULL。
LOG10(x) 返回x的基数为10的对数。
9. 角度与弧度相互转换的函数RADIANS(x)和DEGREES(x)
RADIANS(x) 将参数x由角度转化为弧度。
DEGREES(x)将参数x由弧度转化为角度。
10 正弦函数SIN(x)和反正弦函数ASIN(x)
SIN(x)返回x正弦,其中x为弧度值。
ASIN(x)返回x的反正弦,即正弦为x的值。若x不在-1到1的范围之内,则返回NULL。
由结果可以看到,函数ASIN和SIN互为反函数;ASIN(3)中的参数3超出了正弦值的范围,因此返回NULL。
11. 余弦函数COS(x)和反余弦函数ACOS(x)
COS(x)返回x的余弦,其中x为弧度值。
ACOS(x) 返回x的反余弦,即余弦是x的值。若x不在-1~1的范围之间,则返回NULL。
由结果可以看到,函数COS和ACOS互为反函数。
12. 正切函数、反正切函数和余切函数
TAN(x)返回x的正切,其中x为给定弧度值。
ATAN(x)返回x的反正切,即正切为x的值。
COT(x) 返回x的余切。
由结果可以看到,函数COT和TAN互为倒函数。
PART3. 字符串函数
1. 计算字符串字符数的函数和字符串长度的函数
CHAR_LENGTH(str)返回值为字符串str所包含的字符个数。一个多字节字符算作一个单字符。
LENGTH(str)返回值为字符串的字节长度,使用utf8(UNICODE 的一种变长字符编码,又称万国码)编码字符集时,一个汉字时3字节,一个数字或字母算1字节。
2. 合并字符串函数CONCAT(s1,s2,……)、CONCAT_WS(x,s1,s2,……)
CONCAT(s1,s2,…)返回结果为连接参数产生的字符串,或许有一个或多个参数。如有任何一个参数为NULL,则返回值为NULL。如果所有参数均为非二进制字符串,则结果为非二进制字符串。如果自变量中含有一二进制字符串,则结果为一个二进制字符串。
在CONCAT_WS(x,s1,s2,…)中,CONCAT_WS代表CONCAT WITH Separator,是CONCAT()的特殊形式。第一个参数x是其他参数的分隔符,分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其他参数。如果分隔符为NULL,则结果为NULL。函数会忽略任何分隔符参数后的NULL值。
3. 替换字符串的函数INSERT(s1,x,len,s2)
INSERT(s1,x,len,s2)返回字符串s1,其子字符串起始于x位置和被字符串s2取代的len字符,如果x超过字符串长度,则返回值为原始字符串。假如len的长度大于其他字符串的长度,则位置x开始替换。若任何一个参数为NULL,则返回值为NULL。
4. 字母大小写转换函数
LOWER(str)或者LCASE(str)可以将字符串str中的字母字符全部变成小写字母。
UPPER(str)或者UCASE(str)可以将字符串str中的字母字符全部转换成大写字母。
5. 获取指定长度的 字符串的函数LEFT(s,n)和RIGHT(s,n)
LEFT(s,n)返回字符串s开始的最左边n个字符。
RIGHT(s,n)返回字符串str最右边的n个字符。
6. 填充字符串的函数LPAD(s1,len,s2)和RPAD(s1,len,s2)
LPAN(s1,len,s2)返回字符串s1,其左边由字符串s2填补到len字符长度。假如s1的长度大于len,则返回值被缩短至len字符。
RPAD(s1,len,s2)返回字符串s1,其右边被字符串s2填补至len字符长度。假设字符串s1的长度大于len,则返回值被缩短到len字符长度。
7. 删除空格的函数LTRIM(s)、RTRIM(s)和TRIM(s)
LTRIM(s)返回字符串s,字符串左侧空格字符被删除。
8. 删除指定字符串的函数TRIM(s1 FROM s)
TRIM(s1 FROM s)删除字符串s中两端所有的字符串s1。s1为可选项,在未指定情况下,删除空格。
9. 重复生成字符串的函数REPEAT(s,n)
REPEAT(s,n)返回一个由重复的字符串s组成的字符串,字符串s的数目等于n。若n<=0,则返回一个空字符串。若s或n为NULL,则返回NULL。
10. 空格函数SPACE(n)和替换函数REPLACE(s,s1,s2)
SPACE(n)返回一个由n个空格组成的字符串。
REPLACE(s,s1,s2)使用字符串s2代替字符串s中所有的字符串s1.
11. 比较字符串大小的函数STRCMP(s1,s2)
STRCMP(s1,s2):若所有的字符串均相同,则返回0;若根据当前分类次序,第一个参数小于第二个,则返回-1;其他情况返回1.
12. 获取子串的函数SUBSTRING(s,n,len)和MID(s,n,len)
SUBSTRING(s,n,len)带有len参数的格式,从字符串s返回一个长度与len字符相同的子符串,起始于位置n。也可能对n使用一个负值。假若这样,则子符串的起始位置起始于字符串结尾的n字符,即倒数第n个字符,而不是字符串的开头位置。
MID(s,n,len)与SUBSTRING(s,n,len)的作用相同。
13. 匹配子串开始位置的函数
LOCATE(str1,str)、POSITION(str1 IN str)和INSTR(str,str1)3个函数的作用相同,返回子字符串str1在字符串str中的开始位置。
14. 字符串逆序的函数REVERSE(s)
REVERSE(s)将字符串s反转,返回的字符串的顺序和s字符串顺序相反。
15. 返回指定位置的字符串的函数
ELT(N,字符串1,字符串2,字符串3,…,字符串N):若N = 1,则返回值为字符串1;若N=2,则返回值为字符串2;以此类推;若N小于1或大于参数的数目,则返回值为NULL。
16. 返回指定字符串位置的函数FIELD(s,s1,s2,…,sn)
FIELD(s,s1,s2,…,sn) 返回字符串s在列表s1,s2,…,sn中第一次出现的位置,在找不到s的情况下,返回值为0。如果s为NULL,则返回值为0,原因是NULL不能同任何值进行同等比较。
17. 返回字符串位置的函数FIND_IN_SET(s1,s2)
FIND_IN_SET(s1,s2)返回字符串s1在字符串列表s2中出现的位置,字符串列表是一个由多个逗号’,‘分开的字符串组成的列表。如果s1不是s2或s2为空字符串,则返回值为0。如果任意一个参数为NULL,则返回值为NULL。这个函数在第一个参数包含一个逗号’,‘时将无法正常运行。
18. 选取字符串的函数MAKE_SET(x,s1,s2,…,sn)
MAKE_SET(x,s1,s2,…,sn)函数按x的二进制数从s1,s2,……,sn中选取字符串。例如5的二进制时0101,这个二进制从右往左的第一位和第三位是1,所以选取s1和s3。s1,s2,…,sn中的NULL值不会被添加到结果中。
PART4. 日期和时间函数
1. 获取当前日期的函数和获取当前时间的函数
CURDATE()和CURRENT_DATE()函数的作用相同,将当前日期按照‘YYYY-MM-DD’或者YYYYMMDD格式的值返回,具体格式根据函数在字符串或是数字语境中而定。
CURTIME()和CURRENT_TIME()函数的作用相同,将当前时间以‘HH:MM:SS'或HHMMSS的格式返回,具体格式根据函数在字符串或是数字语境中而定。
2. 获取当前日期和时间的函数
CURRENT_TIMESTAMP()、LOCALTIME()、NOW()和SYSDATE()4个函数的作用相同,均返回当前日期和时间值,格式为’YYYY-MM-DD HH:MM:SS' 或 YYYYMMDDHHMMSS,具体格式根据函数在字符串或数字语境中而定。
3. UNIX时间戳函数
UNIX_TIMESTAMP(date)若无参数调用,则返回一个UNIX时间戳(‘1970-01-01 00:00:00’GMT之后的秒数)作为无符号整数。其中,GMT(Green wich mean time)为格林尼治标准时间。若有date来调用UNIX_TIMESTAMP(),它会将参数值以‘1970-01-01 00:00:00’ GMT后的秒数的形式返回。date可以是一个DATE字符串、DATETIME字符串、TIMESTAMP或一个当地时间的YYMMDD或YYYYMMDD格式的数字。
FROM_UNIXTIME(date)函数把UNIX时间戳转换为普通格式的时间,与UNIX_TIMESTAMP(date)函数互为反函数。
4. 返回UTC日期的函数和返回UTC时间的函数
UTC_DATE()函数返回当前UTC(世界标准时间)日期值,其格式为‘YYYY-MM-DD’或YYYYMMDD,具体格式取决于函数是否用在字符串或数字语境中。
UTC_TIME()返回当前UTC时间值,其格式为‘HH:MM:SS'或HHMMSS,具体格式取决于函数是否用在字符串或数字语境中。
5. 获取月份的函数MONTH(date)和MONTHNAME(date)
MONTH(date)函数返回date对应的月份,范围值为1~12。
MONTHNAME(date)函数返回日期date对应月份的英文全名。
6. 获取星期的函数DAYNAME(d)、DAYOFWEEK(d)和WEEKDAY(d)
DAYNAME(d)函数返回d对应的工作日的英文名称,例如Sunday、Monday等。
DAYOFWEEK(d)函数返回d对应的一周中的索引(位置,1表示周日,2表示周一,…,7表示周六)
WEEKDAY(d)返回d对应的工作日索引:0表示周一,1表示周二,…,6表示周日。
7. 获取星期数的函数WEEK(d)和WEEKOFYEAR(d)
WEEK(d)计算日期d是一年中的第几周。WEEK()的双参数形式允许指定该星期是否起始于周日或周一,以及返回值的范围是否为0~53或1~53.若Mode参数被省略,则使用default_week_format系统自变量的值,可参考表。
Mode | 一周的第一天 | 范围 | Week1为第一周 |
0 | 周日 | 0~53 | 本年度中有一个周日 |
1 | 周一 | 0~53 | 本年度中有3天以上 |
2 | 周日 | 1~53 | 本年度中由一个周日 |
3 | 周一 | 1~53 | 本年度中有3天以上 |
4 | 周日 | 0~53 | 本年度中有3天以上 |
5 | 周一 | 0~53 |
本年度中有一个周一 |
6 | 周日 | 1~53 | 本年度中有3天以上 |
7 | 周一 | 1~53 | 本年度中有一个周一 |
WEEKOFYEAR(d)计算某天位于一年中的第几周,范围是1~53,相当于WEEK(d,3)。
8. 获取天数的函数DAYOFYEAR(d)和DAYOFMONTH(d)
DAYOFYEAR(d)函数返回d是一年中的第几天,范围是1~366。
DAYOFMONTH(d)函数返回d是一年中的第几天,范围是1~31。
9. 获取年份、季度、小时、分钟和秒钟的函数
YEAR(date)返回date对应的年份,范围是1970~2069。
注意:‘00~69’转换为‘2000~2069’,‘70~99’转换为‘1970~1999’ 。
QUARTER(date)返回date对应的一年中的季度值,范围是1~4。
MINUTE(time)返回time对应的分钟数,范围是0~59。
SECOND(time)返回time对应的秒数,范围是0~59。
10. 获取日期的指定值的函数EXTRACT(type FROM date)
EXTRACT(type FROM date)函数所使用的时间间隔类型说明符与DATE_ADD()或DATE_SUB()的相同,但它从日期中提取一部分,而不是执行日期运算。
11. 时间和秒钟转换的函数
TIME_TO_SEC(time)返回已转化为秒的time参数。转换公式为:小时*3600+分钟*600+秒。
SEC_TO_TIME(seconds) 返回被转化为小时、分钟和秒数的seconds参数值,其格式为’HH:MM:SS‘或HHMMSS,具体格式根据该函数是否用在字符串或数字语境中而定。
12. 计算日期和时间的函数
计算日期和时间的函数有DATE_ADD()、ADDDATE()、DATE_SUB()、SUBDATE()、ADDTIME()、SUBTIME()和DATE_DIFF()。
在DATE_ADD(date,INTERVAL expr type) 和DATE_SUB(date,INTERVAL expr type)中,date是一个DATETIME或DATE值,用来指定起始时间。expr是一个表达式,用来指定从起始日期添加或减去的时间间隔值。对于负值的时间间隔,expr可以以一个负号’-‘开头,type为关键词,指示了表达式被解释的方式。
type值 | 预期的expr格式 |
MICROSECOND | MICROSECONDS |
SECOND | SECONDS |
MINUTE | MINUTES |
HOUR | HOURS |
DAY | DAYS |
WEEK | WEEKS |
MONTH | MONTHS |
QUARTER | QUARTERS |
YEAR | YEARS |
SECOND_MICROSECOND | 'SECOND.MICROSECONDS' |
MINUTE_MICROSECOND | 'MINUTE.MICROSECONDS' |
MINUTE_SECOND | 'MINUTE:SECONDS' |
HOUR_MICROSECOND |
'HOURS.MICROSECONDS' |
HOUR_SECOND | 'HOURS:MINUTES:SECONDS' |
HOUR_MINUTE | ’HOURS:MINUTES' |
DAY_MICROSECOND | 'DAYS.MICROSECONDS' |
DAY_SECOND | 'DAYS HOURS:MINUTES:SECONDS' |
DAY_MINUTE | 'DAYS HOURS:MINUTES' |
DAY_HOUR | 'DAYS HOURS' |
YEAR_MONTH | 'YEARS-MONTHS' |
DATE_ADD(date,INTERVAL expr type)和ADDDATE(date,INTERVAL expr type) 两个函数的作用相同,执行日期的加运算。
DATE_SUB(date,INTERVAL expr type) 或者 SUBDATE(date,INTERVAL expr type) 两个函数的作用相同,执行日期的减运算。
ADDTIME(date,expr)函数将expr值添加到date,并返回修改后的值,date是一个日期或者日期时间表达式,而expr是一个时间表达式。
SUBTIME(date,expr)函数将date减去expr值,并返回修改后的值。其中,date是一个日期或者日期时间表达式,而expr是一个时间表达式。
DATEDIFF(date1,date2)返回起始时间date1和结束时间date2之间的天数。date1和date2为日期或日期时间表达式。
13. 将日期和时间格式化的函数
DATE_FORMAT(date,format)根据format指定的格式显示date值。
说明符 | 说明 |
%a | 工作日的缩写名称(Sun……Sat) |
%b |
月份的缩写名称(Jan……Dec) |
%c | 月份,数字形式(0……12) |
%D | 以英文后缀表示月中的几号(1st,2nd……) |
%d | 该月日期,数字形式(00……31) |
%e | 该月日期,数字形式(0……31) |
%f | 微妙(000000……999999) |
%H | 以2位数表示24小时(00……23) |
%h,%I | 以2位数表示12小时(01……12) |
%i | 分钟,数字形式(00……59) |
%j | 一年中的天数(001……366) |
%k | 以24(0……23)小时表示时间 |
%l |
以12(01……12)小时表示时间 |
%M | 月份名称(January……December) |
%m |
月份,数字形式(00……12) |
%p | 上午(AM)或下午(PM) |
%r | 时间,12小时制(小时hh:分钟 mm:秒数 ss 后加AM或者PM) |
%S,%s | 以2位数形式表示秒(00……59) |
%T | 时间,24小时制(小时hh:分钟mm:秒数ss) |
%U | 周(00……53),其中周日为每周的第一天 |
%u | 周(00……53),其中周一为每周的第一天 |
%V | 周(01……53),其中周日为每周的第一天;和%X同时使用 |
%v | 周(01……53),其中周一为每周的第一天;和%x同时使用 |
%W | 工作日名称(周日……周六) |
%w | 一周中的每日(0=周日……6=周六) |
%X | 该周的年份,其中周日为每周的第一天;数字形式,4位数;和%V同时使用 |
%x | 该周的年份,其中周日为每一的第一天;数字形式,4位数;和%V同时使用 |
%Y,%y |
4位数形式表示年份 2位数形式表示年份 |
%% |
标识符% |
TIME_FORMAT(time,format)根据表达式format的要求显示时间time。表达式format指定了显示的格式。因为TIME_FORMAT(time,format)只处理时间,所以format只使用时间格式。
GET_FORMAT(val_type,format_type)返回日期时间字符串的显示格式,val_type表示日期数据类型,包括DATE、DATETIME和TIME;format_type表示格式化显示类型。
值类型 | 格式化类型 | 显示格式字符串 |
DATE | EUR | %d.%m.%Y |
DATE | INTERVAL | %Y%m%d |
DATE | ISO | %Y-%m-%d |
DATE | JIS | %Y-%m-%d |
DATE | USA | %m.%d.%Y |
TIME | EUR | %H.%i.%s |
TIME | INTERVAL | %H.%i%s |
TIME | ISO | %H:%i:%s |
TIME | JIS | %H:%i:%s |
TIME | USA | %h:%i:%s%p |
DATETIME | EUR | %Y-%m-%d %H.%i.%s |
DATETIME | INTERVAL | %Y%m%d%H%i%s |
DATETIME | ISO | %Y-%m-%d %H:%i:%s |
DATETIME | JIS | %Y-%m-%d %H:%i:%s |
DATETIME | USA | %Y-%m-%d %H.%i.%s |
PART5. 条件判断函数
1. IF(expr,v1,v2)函数
IF(expr,v1,v2):如果表达式expr是TRUE(expr<>0 and expr<>NULL),则返回值为v1;否则返回值为v2。IF()的返回值为数字值或字符串值,具体情况视所在语境而定。
2. IFNULL(v1,v2)函数
IFNULL(v1,v2):假如v1不为NULL,则IFNULL()的返回值为v1;否则其返回值为v2.IFNULL()的返回值是数字或者字符串,具体情况取决于其所在的语境。
3. CASE函数
CASE expr WHEN v1 THEN r1 [WHEN v2 THEN r2] …[ELSE rn+1] END: 如果expr值等于某个vn,则返回对应位置THEN后面的结果;如果与所有值都不相等,则返回ELSE后面的rn+1。
CASE WHEN v1 THEN r1[WHEN v2 THEN r2]…ELSE rn+1] END: 某个vn值为TRUE时,返回对应位置THEN后面的结果;如果所有值都不为TRUE,则返回ELSE后的rn+1。
提示:一个CASE表达式的默认返回值类型时任何返回值的相容集合类型,但具体情况视其所在语境而定。如果用在字符串语境中,则返回结果为字符串。如果用在数字语境中,则返回结果为十进制值、实数值或整数值。
PART6. 系统信息函数
MySQL中的系统信息右数据库版本号、当前用户名和连接数、系统字符集、最后一个自动生成的ID值等。
1. 获取MySQL版本号、连接数和数据库名的函数
VERSION()返回指定MySQL服务器版本的字符串。这个字符串使用utf8字符集。
CONNECTION_ID()返回MySQL服务器当前连接的次数,每个连接都有各自唯一的ID。
processlist 命令的输出结果显示了有哪些线程在运行,不仅可以查看当前所有的连接数,还可以查看当前的连接状态、帮助识别出有问题的查询语句等。
如果是root账号,能看到所有用户的当前连接。如果是其他普通账号,则只能看到自己占用的连接。show processlist 只能列出前100条,如果想全部列出可使用show full processlist 命令。
各个列的含义和用途:
(1)Id列,用户登录MySQL时,系统分配的时“connection id” 。
(2)User列,显示当前用户。如果不是root,这个命令就只显示用户权限范围内的SQL语句。
(3)Host列,显示这个语句是从哪个IP的哪个端口上发出的,可以用来追踪出现问题语句的用户。
(4)db列,显示这个进程目前连接的是哪个数据库。
(5)Command列,显示当前连接执行的命令,一般取值为休眠(Sleep)、查询(Query)、连接(Connect)。
(6)Time列,显示这个状态持续的时间,单位是秒。
(7)State列,显示使用当前连接的SQL语句的状态,很重要的列。后续会有所有状态的描述,State只是语句执行中的某一个状态。一个SQL语句,以查询为例,可能需要经历Copying to tmp table、Sorting result、Sending data等状态才能完成。
(8)Info列,显示这个SQL语句,是判断问题语句的一个重要依据。
使用另一个命令行登录MySQL
DATABASE()和SCHEMA() 函数返回使用utf8字符集的默认(当前)数据库名。
2. 获取用户名的函数
USER()、CURRENT_USER、CURRENT_USER()、SYSTEM_USER()和SESSION_USER()这几个函数返回当前被MySQL服务器验证的用户名和主机名组合。这个值符合确定当前登录用户存储权限的MySQL账户。一般情况下,返回值是相同的。
3. 获取字符串的字符集和排序方式的函数
CHARSET(str) 返回字符串str自变量的字符集。
COLLATION(str)返回字符串str的字符排列方式。
4. 获取最后一个自动生成ID值的函数
LAST_INSERT_ID()函数返回最后生成的AUTO_INCREMENT值。
(1) 一次插入一条记录
(2)一次同时插入多条记录
当使用一条INSERT语句插入多行时,LAST_INSERT_ID()只返回插入的第一行数据时产生的值,在这里为第3条记录。之所以这样,是因为这使依靠其他服务器复制同样的INSERT语句变得简单。
注意:LAST_INSERT_ID是与数据表无关的,如果向表a插入数据后再向表b插入数据,那么LAST_INSERT_ID返回表b中的Id值。
PART7. MySQL8.0 的新特性1——加密函数
加密函数主要用来对数据进行加密和界面处理。
1. 加密函数MD5(str)
MD5(str)为字符串算出一个MD5 128比较校验和。该值以32为十六进制数字的二进制字符串形式返回,若参数为NULL,则会返回NULL。
2. 加密函数SHA(str)
SHA(str)从原明文密码str计算并返回加密后的密码字符串,当参数为NULL时,返回NULL。SHA加密算法比MD5更加安全。
3. 加密函数SHA2(str, hash_length)
SHA2(str, hash_length) 使用hash_length作为长度,加密str。hash_length支持的值224、256、384、512和0。其中,0等同于256。
PART8. 其他函数
1. 格式化函数FORMAT(x,n)
FORMAT(x,n)将数字x格式化,并以四舍五入的方式保留小数点后n位,结果以字符串的形式返回。若n为0,则返回结果函数不含小数部分。
2. 不同进制的数字进行转换的函数
CONV(N,from_base,to_base)函数进行不同进制数间的转换。返回值为数值N的字符串表示,有from_base 进制转化为 to_base进制。如有任意一个参数为NULL,则返回值为NULL。自变量N被理解为一个整数,但是可以被指定为一个整数或字符串。最小基数为2,最大基数为36。
3. IP地址与数字相互转换的函数
INET_ATON(expr)给出一个作为字符串的网络地址的点地址表示,返回一个代表该地址数值的整数。地址可以是4或8bit地址。
INET_NTOA(expr)给定一个数字网络地址(4或8bit),返回作为字符串的该地址的点地址表示。
INET_NTOA和INET_ATON互为反函数。
4. 加锁函数和解锁函数
GET_LOCK(str,timeout)设法使用字符串str给定的名字得到一个锁,超时为timeout秒。若成功得到锁,则返回1;若操作超时,则返回0;若发生错误,则返回NULL。假如有一个用GET_LOCK()得到的锁,当执行RELEASE_LOCK()或连接断开(正常或非正常)时,这个锁就会解除。
RELEASE_LOCK(str)解开被GET_LOCK()获取的、用字符串str所命名的锁。若锁被解开,则返回1;若该线程尚未创建锁,则返回0(此时锁没有被解开);若命名的锁不存在,则返回NULL。若该锁从未被GET_LOCK()的调用获取,或锁已经被提前解开了,则该锁不存在。
IS_FREE_LOCK(str)检查名为str的锁是否可以使用(换言之,没有被封锁)。若锁可以使用,则返回1(没有人在用这个锁);若这个锁正在被使用,则返回0;出现错误,则返回NULL(诸如不正确的参数)。
IS_USED_LOCK(str)检查名为str的锁是否正在被使用(换言之,被封锁)。若被封锁,则返回使用该锁的客户端的连接标识符(connection ID);否则,返回NULL。
GET_LOCK('lock',10)返回结果为1,说明成功得到了一个名称为‘lock1’的锁,持续时间为10秒。IS_USED_LOCK('lock1‘)返回结果为当前连接ID,表示名称为‘lock1’的锁正在被使用IS_FREE_LOCK('lock1') 返回结果为0,说明名称为’lock1‘的锁正在被使用。RELEASE_LOCK('lock1')返回值为1,说明解锁成功。
5. 重复执行指定操作的函数
BENCHMAKE(count,expr)函数重复count次执行表达式expr。它可以用于计算MySQL处理表达式的速度。
6. 改变字符集的函数
CONVER(…USING…):带有USING的CONVERT()函数被用来在不同的字符集之间转化数据。
7. 改变数据类型的函数
CAST(x, AS type)和 CONVERT(x, type) 函数将一个类型和值转换为另一个类型的值,可转换的type有BINARY、CHAR(n)、DATE、TIME、DATETIME、DECIMAL、SIGNED、UNSIGNED。
PART9. MySQL8.0的新特性2——窗口函数
这里创建了名称为w1的窗口函数,规定对brcount字段进行排序,然后在SELECT子句中对窗口函数w1执行rank()方法,将结果输出为rank字段。
-- end
[转帖]mysql8.0 MySQL函数的更多相关文章
- [转帖]mysql8.0忘记密码如何操作?
mysql8.0忘记密码如何操作? https://www.cnblogs.com/gspsuccess/p/11245314.html mark 一下 上次竟然不知道怎么弄. 很不幸,刚安装了MYS ...
- MySQL函数索引及优化
很多开发人员在使用MySQL时经常会在部分列上进行函数计算等,导致无法走索引,在数据量大的时候,查询效率低下.针对此种情况本文从MySQL5.7 及MySQL8.0中分别进行不同方式的优化. 1. M ...
- CentOS7快速配置nginx node mysql8.0
目录: (一)基础准备 (二)安装node (三)安装nginx (四)安装mySql8.0 (五)整体配置 (六)安装PM2守护进程 (一)基础准备1.1 概述 服务器操作系统为 centos7.4 ...
- linux安装mysql8.0
linux 上安装mysql8.0 mysql版本8.0.16 MySQL Community 操作系统centos7 准备工作: mysql8.0 rpm文件 安装步骤: 1. 下载mysql的re ...
- Mysql8.0主从配置
环境Centos7.6 ,mysql8.0 Mysql主从配置 1.1 配置环境: 本人在vm下做的实验,linux版本是centos的7.0版本,然后Mysql版本为此时较新的8.0.13版本.做最 ...
- 【转载】安装mysql8.0.11以及修改root密码、连接navicat for mysql。
1.1. 下载: 官网下载zip包,我下载的是64位的: 下载地址:https://dev.mysql.com/downloads/mysql/ 下载zip的包: 下载后解压:(解压在哪个盘都可以的) ...
- 安装mysql8.0.11以及修改root密码、连接navicat for mysql。
最近在学习node.js,少不得要跟数据库打交道,于是打算安装一个数据库软件,在mongedb和mysql之间选择了mysql.作为一个数据库新人不敢评论孰好孰坏,最后选择mysql纯属因为公司在用m ...
- 安装mysql8.0.11及修改root密码、连接navicat for mysql的思路详解
1.1. 下载: 官网下载zip包,我下载的是64位的: 下载地址:https://dev.mysql.com/downloads/mysql/ 下载zip的包: 下载后解压:(解压在哪个盘都可以的) ...
- 【Linux】【MySQL】CentOS7、MySQL8.0.13 骚操作速查笔记——专治各种忘词水土不服
1.前言 [Linux][MySQL]CentOS7安装最新版MySQL8.0.13(最新版MySQL从安装到运行) 专治各种忘词,各种水土不服. - -,就是一个健忘贵的速查表:(当然不包括SQL的 ...
- 【Linux】【MySQL】CentOS7安装最新版MySQL8.0.13(最新版MySQL从安装到运行)
1.前言 框框博客在线报时:2018-11-07 19:31:06 当前MySQL最新版本:8.0.13 (听说比5.7快2倍) 官方之前表示:MySQL 8.0 正式版 8.0.11 已发布,MyS ...
随机推荐
- Fdfs上传的图片批量删除
介绍: 因为计划利用fdfs上传的图片会有很多,所以在考虑到重复利用的情况下,把半年前的图片删除掉. 1)编写清理图片脚本clear.sh 在/home/data目录下创建 clear.sh脚本 内容 ...
- Windows Server 2008 R2 & Windows Server 2012 R2 无法通过update更新的解决方法
windows Server 2008 r2 无法通过update更新的解决方法 注意:目前windows Server系列操作系统已经完全停止支持. 1.安装 SP1补丁 KB976932 点击:微 ...
- 建议收藏备查!MySQL 常见错误代码说明
先给大家看几个实例的错误分析与解决方案. 1.ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/data ...
- 文心一言 VS 讯飞星火 VS chatgpt (174)-- 算法导论13.3 3题
三.用go语言,假设图13-5 和图13-6 中子α.β.γ.δ和ε的黑高都是k.给每张图中的每个结点标上黑高,以验证图中所示的转换能保持性质 5. 文心一言: 在Go语言中,你可以通过以下步骤来为图 ...
- 文心一言 VS 讯飞星火 VS chatgpt (44)-- 算法导论6.1 1题
一.在高度为h的堆中,元素个数最多和最少分别是多少? 文心一言: 在高度为 h 的二叉搜索树(BST)中,元素个数最多和最少的情况分别如下: 1.最多情况:当每个节点都包含两个子节点时,BST 中的元 ...
- 大数据实践解析(下):Spark的读写流程分析
导读: 众所周知,在大数据/数据库领域,数据的存储格式直接影响着系统的读写性能.spark是一种基于内存的快速.通用.可扩展的大数据计算引擎,适用于新时代的数据处理场景.在"大数据实践解析( ...
- Nacos是什么?
摘要:Nacos是 Dynamic Naming and Configuration Service的首字母简称,相较之下,它更易于构建云原生应用的动态服务发现.配置管理和服务管理平台. 本文分享自华 ...
- 一文你带快速认识Vue-Router路由
摘要:Vue Router是Vue.js 官方的路由管理器.它和Vue.js的核心深度集成,可以非常方便的用于SPA应用程序的开发. 本文分享自华为云社区<Vue-Router路由快速了解与应用 ...
- WebKit网页布局实现(0):基本概念及标准篇
作为一个广受好评的浏览器引擎,其网页布局的质量(包括速度.效率.符合标准度等)往往是其关键,那么WebKit究竟是如何布局网页上的所有元素(包括滚动条.文字.图片.按钮.下拉框等)呢?其主要数据结构及 ...
- 陕西旅游集团旗下景区春节期间累计接待超 200 万人次,这背后也有火山引擎 VeDI 的身影
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 春节期间累计接待游客 200.42 万人次,同比 2022 年增长 102.47%,同比 2019 年增长 19.27%, ...