MySQL-函数(3)
六、其他函数
格式化函数
FORMAT(x, n)
FORMAT(x, n) 将数字 x 格式化,并以四舍五入的方式保留小数点后 n 位,结果以字符串的形式返回
mysql> SELECT FORMAT(1.23456, 4), FORMAT(1.2, 4), FORMAT(1.234, 0);
+--------------------+----------------+------------------+
| FORMAT(1.23456, 4) | FORMAT(1.2, 4) | FORMAT(1.234, 0) |
+--------------------+----------------+------------------+
| 1.2346 | 1.2000 | 1 |
+--------------------+----------------+------------------+
不同进制的数字进行转换的函数
CONV()
CONV() 用于不同进制数之间的转换
mysql> SELECT CONV('a',16,2), # 将16进制的a转换为2进制
-> CONV(15,10,2), # 将10进制的15转换为2进制
-> CONV(15,10,8), # 将10进制的15转换为8进制
-> CONV(15,10,16); # 将10进制的15转换为16进制
+----------------+---------------+---------------+----------------+
| CONV('a',16,2) | CONV(15,10,2) | CONV(15,10,8) | CONV(15,10,16) |
+----------------+---------------+---------------+----------------+
| 1010 | 1111 | 17 | F |
+----------------+---------------+---------------+----------------+
IP 地址与数字互相转换的函数
INET_ATON(expr) 、INET_NTOA(expr)
INET_ATON(expr) 用于将网络地址转换为一个代表该地址数值的整数
mysql> SELECT INET_ATON('192.168.1.1');
+--------------------------+
| INET_ATON('192.168.1.1') |
+--------------------------+
| 3232235777 |
+--------------------------+
加锁函数和解锁函数
GET_LOCK(str, timeout) 、RELEASE_LOCAK(str) 、 IS_FREE_LOCK(str) 、
IS_USED_LOCK(str) GET_LOCK(str, timeout) 使用字符串 str 来得到一个锁,持续时间 timeout 秒
若成功得到锁,则返回 1
若操作超时,则返回 0
若发生错误,则返回 NULL
mysql> SELECT GET_LOCK('lock1', 10);
+-----------------------+
| GET_LOCK('lock1', 10) |
+-----------------------+
| 1 | # 返回结果为1,说明成功得到了一个名称为'lock1'的锁,持续时间为10秒
+-----------------------+
RELEASE_LOCAK(str) 用于解开被 GET_LOCK() 获取的,用字符串 str 所命名的锁
若锁被解开,则返回 1
若该线程尚未创建锁,则返回 0
若命名的锁不存在,则返回 NULL
若该锁从未被 GET_LOCK() 的调用获取,或锁已经被提前解开,则该锁不存在
mysql> SELECT RELEASE_LOCK('lock1');
+-----------------------+
| RELEASE_LOCK('lock1') |
+-----------------------+
| 1 | # 返回值为1说明解锁成功
+-----------------------+
IS_FREE_LOCK(str) 检查名为 str 的锁是否可以使用
若锁可以使用,则返回 1
若锁正在被使用,则返回 0
若出现错误,则返回 NULL
mysql> SELECT IS_FREE_LOCK('lock1');
+-----------------------+
| IS_FREE_LOCK('lock1') |
+-----------------------+
| 1 | # 返回值为1说明锁可以使用
+-----------------------+
IS_USED_LOCK(str) 用于检查名为 str 的锁是否正在被使用,若被封锁,则返回使用该锁的客户端的连接标识符,否则返回 NULL
mysql> SELECT IS_USED_LOCK('lock1');
+-----------------------+
| IS_USED_LOCK('lock1') |
+-----------------------+
| 10 | # 返回结果为当前连接ID,表示名称为'lock1'的锁正在被使用
+-----------------------+-
重复执行指定操作的函数
BENCHMARK(count, expr) BENCHMARK(count, expr) 用于重复 count 次执行表达式 expr
可以用于计算 MySQL 处理表达式的速度
可以在 MySQL 客户端内部报告语句执行的时间
mysql> SELECT PASSWORD('newpwd');
+-------------------------------------------+
| PASSWORD('newpwd') |
+-------------------------------------------+
| *1FA85AA204CC12B39B20E8F1E839D11B3F9E6AA4 |
+-------------------------------------------+
1 row in set, 1 warning (0.00 sec) # 执行1次加密操作花费了0.00秒
mysql> SELECT BENCHMARK( 500000, PASSWORD('newpwd') );
+-----------------------------------------+
| BENCHMARK( 500000, PASSWORD('newpwd') ) |
+-----------------------------------------+
| 0 |
+-----------------------------------------+
1 row in set, 1 warning (0.16 sec) # 执行500000次加密操作花费了0.16秒
改变字符集的函数
CONVERT(… USING …)
CONVERT(… USING …) 用于改变字符串的默认字符集
mysql> SELECT CHARSET('abc'); # 默认是utf8字符集
+----------------+
| CHARSET('abc') |
+----------------+
| utf8 |
+----------------+
mysql> SELECT CHARSET(CONVERT('abc' USING latin1)); # 转换成latin1字符集
+--------------------------------------+
| CHARSET(CONVERT('abc' USING latin1)) |
+--------------------------------------+
| latin1 |
+--------------------------------------+
改变数据类型的函数
CAST(x, AS type) 、CONVERT(x, type)
CAST(x, AS type) 用于将一个数据类型的值转换为另一个数据类型的值 CONVERT(x, type) 用于将一个数据类型的值转换为另一个数据类型的值
mysql> SELECT CAST(100 AS CHAR(2)); # 将整数类型100转换为带有两个显示宽度的字符串类型,结果为'10'
+----------------------+
| CAST(100 AS CHAR(2)) |
+----------------------+
| 10 |
+----------------------+
CONVERT(x, type) 用于将一个数据类型的值转换为另一个数据类型的值
mysql> SELECT CONVERT(100, CHAR(2)); # 将整数类型的100转换为带有两个显示宽度的字符串类型,结果为'10'
+-----------------------+
| CONVERT(100, CHAR(2)) |
+-----------------------+
| 10 |
+-----------------------+
- 点赞
- 收藏
- 关注作者
评论(0)