MySQL特殊函数

本文介绍了MySQL中常用的函数,包括有效数字保留、不同进制转换、IP地址与数字转换、加锁解锁、重复执行操作、改变字符集及数据类型等。通过具体示例展示了这些函数的应用场景和使用方法。

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

1.有效数字保留函数FORMAT(x,n)
将数字x格式化,并以四舍五入的方式保留小数点后n位,结果以字符串返回,如果n=0,则返回结果不包含小数。

mysql> select format(1232.123456, 4),
    -> format(12332.1,4),
    -> format(12323.2,0);
+------------------------+-------------------+-------------------+
| format(1232.123456, 4) | format(12332.1,4) | format(12323.2,0) |
+------------------------+-------------------+-------------------+
| 1,232.1235             | 12,332.1000       | 12,323            |
+------------------------+-------------------+-------------------+
1 row in set (0.01 sec)

2.不同进制的数字进行转换的函数
CONV(N,from_base,to_base),返回值为数值N的字符串表示,由from_base进制转化为to_base进制。如果有任意一个参数为NULL,则返回值为NULL。

mysql> select conv('a',16,2),
    -> conv(15,10,2),
    -> conv(15,10,8),
    -> conv(15,10,16);
+----------------+---------------+---------------+----------------+
| conv('a',16,2) | conv(15,10,2) | conv(15,10,8) | conv(15,10,16) |
+----------------+---------------+---------------+----------------+
| 1010           | 1111          | 17            | F              |
+----------------+---------------+---------------+----------------+
1 row in set (0.01 sec)

3.IP地址与数字相互转换函数INET_ATON和INET_NTOA.

mysql> select inet_aton('209.207.224.40');
+-----------------------------+
| inet_aton('209.207.224.40') |
+-----------------------------+
|                  3520061480 |
+-----------------------------+
1 row in set (0.00 sec)

mysql> select inet_ntoa(3520061480);
+-----------------------+
| inet_ntoa(3520061480) |
+-----------------------+
| 209.207.224.40        |
+-----------------------+
1 row in set (0.00 sec)

4.加锁解锁函数GET_LOCK(str,timeout),RELEASE_LOCK(str),IS_FREE_LOCK(str),IS_USED_LOCK(str)
GET_LOCK(str,timeout):使用字符串str给定的名字得到一个锁,超时为timeout秒。若成功得到锁,则返回1;若操作超时,返回0;发生错误返回NULL。
RELEASE_LOCK(str):解锁。
IS_FREE_LOCK(str):判断锁是否可用。
IS_USED_LOCK(str):判断锁是否被正在使用。

mysql> select get_lock('lock1',10) as getlock,
    -> is_used_lock('lock1') as isusedlock,
    -> is_free_lock('lock1') as isfreelock,
    -> release_lock('lock1') as releaselock;
+---------+------------+------------+-------------+
| getlock | isusedlock | isfreelock | releaselock |
+---------+------------+------------+-------------+
|       1 |         16 |          0 |           1 |
+---------+------------+------------+-------------+
1 row in set (0.00 sec)

5.重复执行指定的操作BENCHMARK
BENCHMARK(count,expr)函数重复count次执行表达式expr,它报告的是客户端经过的时间,而不是在服务器端的CPU时间。

mysql> select benchmark(50000,password('newpwd'));
+-------------------------------------+
| benchmark(50000,password('newpwd')) |
+-------------------------------------+
|                                   0 |
+-------------------------------------+
1 row in set (0.05 sec)

6.改变字符集函数CONVERT()

mysql> select charset('string'), charset(convert('string' using utf8));
+-------------------+---------------------------------------+
| charset('string') | charset(convert('string' using utf8)) |
+-------------------+---------------------------------------+
| latin1            | utf8                                  |
+-------------------+---------------------------------------+
1 row in set (0.00 sec)

7.改变数据类型的函数CAST(x,AS type)和CONVERT(x,type)

mysql> select cast(100 as char(2)),convert('2010-10-01 12:12:12', time);
+----------------------+--------------------------------------+
| cast(100 as char(2)) | convert('2010-10-01 12:12:12', time) |
+----------------------+--------------------------------------+
| 10                   | 12:12:12                             |
+----------------------+--------------------------------------+
1 row in set, 1 warning (0.00 sec)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值