MySQL 函数简介——其他函数

下面要介绍的函数不能笼统地分为哪一类,但是这些函数也非常有用,例如重复指定操作 函数、改变字符集函数、IP 地址与数字转换函数等。下面将介绍这些函数的作用和使用方法

  1. 格式化函数 FORMAT(x,n) FORMAT(x,n)将数字 x 格式化,并以四舍五入的方式保留小数点后 n 位,结果以字符串的形 式返回。若 n 为 0,则返回结果函数不含小数部分。 使用 FORMAT 函数格式化数字,保留小数点位数为指定值,输入语句如下:

SELECT FORMAT(12332.123456, 4), FORMAT(12332.1,4), FORMAT(12332.2,0);

由结果可以看到,FORMAT(12332.123456, 4)保留 4 位小数点值,并进行四舍五入,结果为 12332.1235;FORMAT(12332.1,4)保留 4 位小数值,位数不够的用 0 补齐;FORMAT(12332.2,0)不 保留小数位值,返回结果为整数 12332。

  1. 不同进制的数字进行转换的函数 CONV(N, from_base, to_base)函数进行不同进制数间的转换。返回值为数值 N 的字符串表示, 由 from_base 进制转化为 to_base 进制。如有任意一个参数为 NULL,则返回值为 NULL。自变量 N 被理解为一个整数,但是可以被指定为一个整数或字符串。最小基数为 2,最大基数为 36。 使用 CONV 函数在不同进制数值之间转换,输入语句如下:

SELECT CONV('a',16,2), CONV(15,10,2),CONV(15,10,8), CONV(15,10,16);

CONV('a',16,2) 将十六进制的 a 转换为二进制表示的数值,十六进制的 a 表示十进制的数值 10,二进制的数值 1010 正好等于十进制的数值 10;CONV(15,10,2)将十进制的数值 15 转换为二进 制值,结果为 1111;CONV(15,10,8)将十进制的数值 15 转换为八进制值,结果为 17;CONV(15,10,16) 将十进制的数值 15 转换为十六进制值,结果为 F。 进制说明: 二进制,采用 0 和 1 两个数字来表示的数。它以 2 为基数,逢二进一。 八进制,采用 0、1、2、3、4、5、6、7 八个数字,逢八进一,以数字 0 开头。 十进制,采用 0~9,共 10 个数字表示,逢十进一。 十六进制,由 0~9、A~F 组成,以数字 0x 开头。与十进制的对应关系是:0~9 对应 0~9, A~F 对应 10~15。

  1. IP 地址与数字相互转换的函数 INET_ATON(expr)给出一个作为字符串的网络地址的点地址表示,返回一个代表该地址数值 的整数。地址可以是 4 或 8bit 地址。 使用 INET_ATON 函数将字符串网络点地址转换为数值网络地址,输入语句如下:

 SELECT INET_ATON('209.207.224.40');

INET_NTOA(expr)给定一个数字网络地址(4 或 8bit),返回作为字符串的该地址的点地址表 示。 使用 INET_NTOA 函数将数值网络地址转换为字符串网络点地址,输入语句如下:

SELECT INET_NTOA(3520061480);

可以看到,INET_NTOA 和 INET_ATON 互为反函数。

  1. 加锁函数和解锁函数 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。 使用加锁、解锁函数,输入语句如下:

 SELECT GET_LOCK('lock1',10) AS GetLock,IS_USED_LOCK('lock1') AS ISUsedLock,IS_FREE_LOCK('lock1') AS ISFreeLock, RELEASE_LOCK('lock1') AS ReleaseLock;

GET_LOCK('lock1',10)返回结果为 1,说明成功得到了一个名称为‘lock1’的锁,持续时间为 10 秒。 IS_USED_LOCK('lock1')返回结果为当前连接 ID,表示名称为‘lock1’的锁正在被使用。 IS_FREE_LOCK('lock1')返回结果为 0,说明名称为‘lock1’的锁正在被使用。 RELEASE_LOCK('lock1')返回值为 1,说明解锁成功。

  1. 重复执行指定操作的函数 BENCHMARK(count,expr)函数重复 count 次执行表达式 expr。它可以用于计算 MySQL 处理表 达式的速度。结果值通常为 0(0 只是表示处理过程很快,并不是没有花费时间)。另一个作用是 它可以在 MySQL 客户端内部报告语句执行的时间。 使用 BENCHMARK 重复执行指定函数。 首先,使用 PASSWORD 函数加密密码,输入语句如下:

 SELECT SHA('newpwd');

可以看到,PASSWORD 执行花费时间为 0.00sec。下面使用 BENCHMARK 函数重复执行 PASSWORD 操作 500000 次:

SELECT BENCHMARK(500000, SHA('newpwd'));

由此可以看出,使用 BENCHMARK 执行 500000 次的时间为 0.29 sec,明显比执行一次的时 间延长了。 提 示 :BENCHMARK 报告的时间是客户端经过的时间,而不是在服务器端的 CPU 时间,每次 执行后报告的时间并不一定是相同的。读者可以多次执行该语句,查看结果。

  1. 改变字符集的函数 CONVERT(... USING ...):带有 USING 的 CONVERT()函数被用来在不同的字符集之间转化数 据。 使用 CONVERT()函数改变字符串的默认字符集,输入语句如下:

 SELECT CHARSET('string'),CHARSET(CONVERT('string' USING latin1));

默认为 gbk 字符集,通过 CONVERT 将字符串“string”的默认字符集改为 latin1。

  1. 改变数据类型的函数 CAST(x , AS type)和 CONVERT(x, type)函数将一个类型的值转换为另一个类型的值,可转换 的 type 有 BINARY、CHAR(n)、DATE、TIME、DATETIME、DECIMAL、SIGNED、UNSIGNED。 使用 CAST 和 CONVERT 函数进行数据类型的转换,SQL 语句如下:

 SELECT CAST(100 AS CHAR(2)), CONVERT('2018-10-01 12:12:12',TIME); 

可以看到,CAST(100 AS CHAR(2))将整数数据 100 转换为带有两个显示宽度的字符串类型, 结果为‘10’;CONVERT('2018-10-01 12:12:12',TIME)将 DATETIME 类型的值转换为 TIME 类型 值,结果为‘12:12:12’。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL分组函数是用于对数据进行聚合计算的函数。常见的分组函数包括SUM、AVG、MIN、MAX和COUNT等。 例如,使用SUM函数可以计算某一列的总和,使用AVG函数可以计算某一列的平均值,使用MIN函数可以找出某一列的最小值,使用MAX函数可以找出某一列的最大值,使用COUNT函数可以计算某一列的非空值数量。 下面是一些使用分组函数的示例: - 查询所有员工的工资总和:SELECT SUM(salary) FROM employees; \[2\] - 查询员工的平均工资:SELECT AVG(salary) FROM employees; \[2\] - 查询员工的最低工资:SELECT MIN(salary) FROM employees; \[2\] - 查询员工的最高工资:SELECT MAX(salary) FROM employees; \[2\] - 查询有工资的员工数:SELECT COUNT(salary) FROM employees; \[2\] 此外,还可以使用分组函数进行更复杂的计算,比如计算最大入职时间和最小入职时间的相差天数: - 查询员工表中的最大入职时间和最小入职时间的相差天数:SELECT DATEDIFF(MAX(hiredate), MIN(hiredate)) 相差天数 FROM employees; \[3\] 通过使用这些分组函数,可以对数据进行聚合计算,从而得到有用的统计信息。 #### 引用[.reference_title] - *1* *2* *3* [MySQL常见函数之——分组函数(sum、avg、count、max、min等)](https://blog.csdn.net/qq_43163943/article/details/108672074)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值