MySQL --- 函数大全 8
目录
1.返回一个字符串在出现指定数量的分隔符之前的子字符串 SUBSTRING_INDEX()
2.减去时间 SUBTIME()
3.返回总和 SUM()
4.返回函数执行的时间 SYSDATE()
5.返回参数的切线 TAN()
6.提取表达式传递的时间部分 TIME()
7.格式化为时间 TIME_FORMAT()
8.返回转换为秒的参数 TIME_TO_SEC()
9.减去时间 TIMEDIFF()
10.使用单个参数,此函数返回日期或日期时间表达;有两个参数,参数的总和 TIMESTAMP()
11.向日期时间表达式添加间隔 TIMESTAMPADD()
12.从日期时间表达式中减去间隔 TIMESTAMPDIFF()
13.返回转换为 base-64 字符串的参数 TO_BASE64()
14.返回转换为天的日期参数 TO_DAYS()
15.返回自 第 0 年 TO_SECONDS()
16.删除前导空格和尾随空格 TRIm()
17.截断到指定的小数位数 TRUNCATE()
18.解压缩压缩的字符串 UNCOMPRESS()
19.返回压缩前字符串的长度 UNCOMPRESSED_LENGTH()
20.返回包含数字的十六进制表示形式的字符串 UNHEx()
21.返回 Unix 时间戳 UNIX_TIMESTAMP()
22.返回替换的 XML 片段 UpdateXML()
23.转换为大写 UPPER() / UCASE()
24.客户端提供的用户名和主机名 USER()
25.返回当前 UTC 日期 UTC_DATE()
26.返回当前 UTC 时间 UTC_TIME()
27.返回当前 UTC 日期和时间 UTC_TIMESTAMP()
28.返回通用唯一标识符 (UUID) UUID()
29.返回整数值通用标识符 UUID_SHORT()
30.将字符串 UUID 转换为二进制 UUID_TO_BIn()
31.确定密码的强度 VALIDATE_PASSWORD_STRENGTH()
32.定义插入过程中要使用的值 VALUES()
33.返回总体标准方差 VAR_POP()
34.返回样本方差 VAR_SAMP()
35.返回总体标准方差 VARIANCE()
36.返回 MySQL 数据库的当前版本 VERSION()
37.等到给定的 GTID 在副本上执行 WAIT_FOR_EXECUTED_GTID_SET()
38.返回周数 WEEK()
39.返回工作日索引 WEEKDAY()
40.返回日期的日历周 (1-53) WEEKOFYEAR()
41.返回字符串的权重字符串 WEIGHT_STRING()
42.逻辑异或 XOR
43.返回年份 YEAR()
44.返回年份和周 YEARWEEK()
45.按位或 |
46.按位反转 ~
1.返回一个字符串在出现指定数量的分隔符之前的子字符串 SUBSTRING_INDEX()
脚本
SELECT SUBSTRING_INDEX('hello orld china', ' ', 2);
分析
在出现指定数量的分隔符之前返回字符串的子字符串
结果
2.减去时间 SUBTIME()
脚本
SELECT SUBTIME('2022-12-16 23:59:25','12:45:03'),SUBTIME(NOW(),NOW());
分析
SUBTIME() 函数从时间/日期时间表达式中减去时间,然后返回新的时间/日期时间。
语法
SUBTIME(datetime, time_interval)
参数值
参数 描述 datetime必需。要修改的时间或日期时间time_interval必需。从 datetime 中减去的时间间隔。 正负值都可以
结果
3.返回总和 SUM()
脚本
create table a ( id int auto_increment primary key, score int ); insert into a (score) values (90), (90), (85), (80), (70); insert into a (score) value (100); select sum(score) from a;
结果
4.返回函数执行的时间 SYSDATE()
脚本
select SYSDATE();
分析
SYSDATE() 函数返回当前日期和时间。
注意日期和时间以 "YYYY-MM-DD HH:MM:SS" (字符串)或 YYYYMMDDHHMMSS(数字)形式返回。
结果
5.返回参数的切线 TAN()
脚本
select tan(0),tan(pi()),tan(180);
结果
6.提取表达式传递的时间部分 TIME()
脚本
select time(no()),time('2022-12-16 13:33:23');
结果
7.格式化为时间 TIME_FORMAT()
脚本
SELECT TIME_FORMAT('19:30:10', '%h %i %s %p'),TIME_FORMAT('19:30:10', '%T');
分析
语法
TIME_FORMAT(time, format)
参数值
参数 描述 time必需。格式化时间format必需。要使用的格式。 可以是以下之一或组合格式 描述 %f微秒(000000 到 999999)%H小时(00 到 23)%h小时(00 到 12)%I小时(00 到 12)%i分钟(00 到 59)%p上午或下午%r12 小时 AM 或 PM 格式的时间 (hh:mm:ss AM/PM)%S秒(00 到 59)%s秒(00 到 59)%T24 小时制时间 (hh:mm:ss)
结果
8.返回转换为秒的参数 TIME_TO_SEC()
脚本
SELECT TIME_TO_SEC(no());
结果
9.减去时间 TIMEDIFF()
脚本
select timediff('2022-12-17 12:00:36','2022-12-17 11:00:23');
分析
TIMEDIFF() 函数返回两个时间/日期时间表达式之间的差异。
注意 time1和time2格式要一致,计算为time1 - < em>time2.
语法
TIMEDIFF(time1, time2)
参数值
参数 描述 time1必需。时间值time2必需。另一个时间值
结果
10.使用单个参数,此函数返回日期或日期时间表达;有两个参数,参数的总和 TIMESTAMP()
脚本
select timestamp(no()),timestamp('2022-12-17','15:08:36');
分析
注意如果此函数指定了两个参数,它将第二个参数添加到第一个参数,然后返回一个日期时间值。
语法
TIMESTAMP(expression, time)
参数值
参数 描述 expression必需。日期或日期时间值time可选。添加到expression
结果
11.向日期时间表达式添加间隔 TIMESTAMPADD()
脚本
SELECT TIMESTAMPADD(WEEK, 1, '2022-12-17'),TIMESTAMPADD(DAY, 7, '2022-12-17'),TIMESTAMPADD(SECOND ,60,'2022-12-17');
分析
语法
TIMESTAMPADD(unit, interval, datetime)
参数
unit 必需的。时间间隔的单位
interval 必需的。一个表示时间间隔的整数值。
datetime 必需的。一个 datetime 值或表达式。
unit 可选单位
- FRAC_SECOND 表示间隔是毫秒
- SECOND 秒
- MINUTE 分钟
- HOUR 小时
- DAY 天
- WEEK 星期
- MONTH 月
- QUARTER 季度
- YEAR 年
结果
12.从日期时间表达式中减去间隔 TIMESTAMPDIFF()
脚本
SELECT TIMESTAMPDIFF(WEEK, '2022-12-10', '2022-12-17'), TIMESTAMPDIFF(DAY, '2022-11-16', '2022-12-17'), TIMESTAMPDIFF(MONTH, '2022-11-16', NOW());
分析
语法
TIMESTAMPDIFF(unit, datetime1, datetime2)
参数
unit 必需的。时间间隔的单位
datetime1 必需的。一个 datetime 值或表达式。
datetime2 必需的。一个 datetime 值或表达式。
unit 可选单位和TIMESTAMPADD一样
结果
13.返回转换为 base-64 字符串的参数 TO_BASE64()
脚本
SELECT TO_BASE64('abc'), FROM_BASE64(TO_BASE64('abc'));
分析
将字符串参数转换为 base-64 编码形式,并且 将结果作为带有连接的字符串返回 字符集和排序规则。如果参数不是字符串, 在转换发生之前,它会转换为字符串。
FROM_BASE64()转换
存在不同的 base-64 编码方案。这些是 TO_BASE64() 和 FROM_BASE64() 使用的编码和解码规则
字母值 62 的编码为 。'+'
字母值 63 的编码为 。'/'
编码输出由 4 组可打印组成 字符。每 3 个字节的输入数据进行编码 使用 4 个字符。如果一个组不完整,则为 填充一定长度的字符 的 4.'='
每 76 个字符的编码后添加一个换行符 输出,将长输出分成多行。
解码识别并忽略换行符、回车符、 制表符和空格。
结果
14.返回转换为天的日期参数 TO_DAYS()
脚本
SELECt TO_DAYS('2022-12-17');
分析
将指定日期转为距离 0 年的天数并返回
TO_DAYS() 不适用于 与公历出现之前的值一起使用 日历(1582),因为它没有考虑到 更改日历时丢失的天数。对于日期 在1582年之前(在其他地区可能更晚), 此函数的结果不可靠
结果
15.返回自 第 0 年 TO_SECONDS()
脚本
SELECT TO_SECONDS('2022-12-17');
分析
与 TO_DAYS()类似,此函数返回秒数
结果
16.删除前导空格和尾随空格 TRIm()
脚本
SELECT TRIm(' HELLO WORLD ');
分析
只能删除前后的空格,中间的空格不可以删除
结果
17.截断到指定的小数位数 TRUNCATE()
脚本
SELECT TRUNCATE(123.456,2),TRUNCATE(123.456789,5);
分析
直接截取不遵循四舍五入原则
结果
18.解压缩压缩的字符串 UNCOMPRESS()
脚本
SELECT UNCOMPRESS(COMPRESS('any string'));
分析
解压缩 COMPRESS() 函数压缩后的字符串
解压缩指定的字符串 ,并将结果作为二进制字符串返回。
结果
19.返回压缩前字符串的长度 UNCOMPRESSED_LENGTH()
脚本
SELECT UNCOMPRESSED_LENGTH(COMPRESS('any string'));
结果
20.返回包含数字的十六进制表示形式的字符串 UNHEx()
脚本
SELECT UNHEx('4D7953514C');
分析
执行HEx(str)的逆运算。也就是说,它解释每对十六进制数字的参数作为数字并将其转换成由数字表示的字符。所得字符返回为二进制字符串。
结果
21.返回 Unix 时间戳 UNIX_TIMESTAMP()
脚本
SELECT UNIX_TIMESTAMP('2022-12-17'),UNIX_TIMESTAMP();
分析
不写参数默认是no
结果
22.返回替换的 XML 片段 UpdateXML()
脚本
SELECT UpdateXML('c', '/a', ' fff '), UpdateXML('c', '/b', ' fff ');
分析
UPDATEXML (XML_document, XPath_string, ne_value);
第一个参数XML_document是String格式,为XML文档对象的名称
第二个参数XPath_string (Xpath格式的字符串)
第三个参数ne_value,String格式,替换查找到的符合条件的数据
结果
23.转换为大写 UPPER() / UCASE()
脚本
select upper('abc'),ucase('abc');
结果
24.客户端提供的用户名和主机名 USER()
脚本
select user();
结果
25.返回当前 UTC 日期 UTC_DATE()
脚本
select utc_date();
结果
26.返回当前 UTC 时间 UTC_TIME()
脚本
select utc_time();
分析
结果
27.返回当前 UTC 日期和时间 UTC_TIMESTAMP()
脚本
SELECT UTC_TIMESTAMP();
结果
28.返回通用唯一标识符 (UUID) UUID()
脚本
SELECT UUID();
分析
UUID代表通用唯一标识符。UUID是基于RFC 4122“通用唯一标识符(UUID)URN命名空间”)定义的。
UUID被设计为在空间和时间全球独一无二的数字。 预期两个UUID值是不同的,即使它们在两个独立的服务器上生成。
在MySQL中,UUID值是一个128位的数字,表示为以下格式的十五进制数字的utf8字符串
aaaaaaaa-bbbb--dddd-eeeeeeeeeeee
结果
29.返回整数值通用标识符 UUID_SHORT()
脚本
SELECT UUID_SHORT();
分析
MySQL中的此函数用于返回“short”通用标识符,为64位无符号整数。如果满足以下条件,则保证UUID_SHORT()的值是唯一的
- 当前服务器的server_id值介于0到255之间,并且在我们的源服务器和副本服务器集合中是唯一的。
- 在mysqld重新启动之间,我们不为服务器主机设置系统时间。
- 在mysqld重新启动之间,我们平均每秒调用UUID_SHORT()少于1600万次。
结果
30.将字符串 UUID 转换为二进制 UUID_TO_BIn()
脚本
SELECT HEx(UUID_TO_BIn('fe69524c-7de2-11ed-aa0b-000c2957f410'));
分析
没有HEx()只这样的
使用HEx() 函数将它转为十六进制字符串,增强可读性
结果
31.确定密码的强度 VALIDATE_PASSWORD_STRENGTH()
分析
使用此函数需要下载插件
密码验证组件
密码测试
返回值 长度 < 40长度 ≥ 4 和100
32.定义插入过程中要使用的值 VALUES()
脚本
create table a ( id int auto_increment primary key, score int ); insert into a (score) values (90), (90), (85), (80), (70); insert into a (score) value (100);
结果
33.返回总体标准方差 VAR_POP()
脚本
create table a ( id int auto_increment primary key, score int ); insert into a (score) values (90), (90), (85), (80), (70); insert into a (score) value (100); select var_pop(score) from a;
分析
总体方差是一组资料中各数值与其算术平均数离差平方和的平均数。总体标准差则是总体方差的平方根。
结果
34.返回样本方差 VAR_SAMP()
脚本
create table a ( id int auto_increment primary key, score int ); insert into a (score) values (90), (90), (85), (80), (70); insert into a (score) value (100); select var_samp(score) from a;
分析
先求出总体各单位变量值与其算术平均数的离差的平方,然后再对此变量取平均数,就叫做样本方差。样本方差用来表示一列数的变异程度。样本均值又叫样本均数。即为样本的均值。
均值是指在一组数据中所有数据之和再除以数据的个数。
结果
35.返回总体标准方差 VARIANCE()
脚本
create table a ( id int auto_increment primary key, score int ); insert into a (score) values (90), (90), (85), (80), (70); insert into a (score) value (100); select variance(score) from a;
分析
总体方差是一组资料中各数值与其算术平均数离差平方和的平均数。总体标准差则是总体方差的平方根。
这是数学问题
结果
36.返回 MySQL 数据库的当前版本 VERSION()
脚本
select version();
结果
37.等到给定的 GTID 在副本上执行 WAIT_FOR_EXECUTED_GTID_SET()
分析
WAIT_FOR_EXECUTED_GTID_SET(GTID_SET [, TIMEOUT])
当GTID_SUBSET(GTID_SET, @@global.gtid_executed)成立时,即指定的GTID是gtid_executed的子集时,返回0表示成功,否则返回1,表示失败。
38.返回周数 WEEK()
脚本
select eek(no());
分析
返回这周是今年的多少周
结果
39.返回工作日索引 WEEKDAY()
脚本
select eekday(no());
分析
返回给定日期的工作日编号。
注意
0 = 星期一
1 = 星期二
2 = 星期三
3 = 星期四
4 = 星期五
5 = 星期六
6 = 星期日
结果
40.返回日期的日历周 (1-53) WEEKOFYEAR()
脚本
select eekofyear(no());
分析
与eek()一样
结果
41.返回字符串的权重字符串 WEIGHT_STRING()
脚本
SELECT HEx(WEIGHT_STRING('Cat'));
分析
语法
WEIGHT_STRING(str [AS {CHAR|BINARY}(N)] [flags])此函数返回输入字符串的权重字符串。
返回值是一个二进制字符串,它 表示字符串的比较和排序值。
它具有以下属性
- 如果 WEIGHT_STRING(str1) = WEIGHT_STRING(str2),则 str1 = str2(str1 和 str2 被视为相等)
- 如果 WEIGHT_STRING(str1) < WEIGHT_STRING(str2),则 str1 < str2 ( str1 在 str2 之前排序)
WEIGHT_STRING() 是一个供内部使用的调试函数。
输入字符串 str 是一个字符串表达式。
如果输入是非二进制(字符)字符串(如 CHAR、VARCHAR 或 TEXT 值),则返回值包含字符串的排序规则权重。
如果输入是二进制(字节)字符串,例如二进制、变量或 BLOB 值,则返回值与输入相同(二进制字符串中每个字节的权重是字节值)。
如果输入为 NULL,则 WEIGHT_STRING() 返回 NULL
结果
42.逻辑异或 XOR
脚本
select 1 xor 0, 1 xor 1,0 xor 0,null xor 1;
分析
XOR 表示逻辑异或,具体语法规则为
- 当任意一个操作数为 NULL 时,返回值为 NULL;
- 对于非 NULL 的操作数,如果两个操作数都是非 0 值或者都是 0 值,则返回值为 0;
- 如果一个为0值,另一个为非 0 值,返回值为 1。
结果
43.返回年份 YEAR()
脚本
select year(no());
结果
44.返回年份和周 YEARWEEK()
脚本
select yeareek(no());
结果
45.按位或 |
脚本
SELECT 10 | 15, 9 | 4 | 2;
分析
参与|运算的两个二进制位有一个为 1 时,结果就为 1,两个都为 0 时结果才为 0。例如1|1结果为 1,0|0结果为0,1|0结果为1,这和逻辑运算中的||非常类似。
10 的补码为 1010,15 的补码为 1111,按位或运算之后,结果为 1111,即整数 15;9 的补码为 1001,4 的补码为 0100,2 的补码为 0010,按位或运算之后,结果为 111,即整数 15。
结果
46.按位反转 ~
脚本
SELECT ~1,~18446744073709551614;
分析
位取反是将参与运算的数据按对应的补码进行反转,也就是做 NOT 操作,即 1 取反后变 0,0 取反后变为 1。
常量 1 的补码为 63 个‘0‘加 1 个’1‘,位取反后就是 63 个’1‘加一个’0‘,转换为二进制后就是 18446744073709551614。
结果
函数大全1
函数大全2
函数大全3
函数大全4
函数大全5
函数大全6
函数大全7