[MySQL]单行函数(五)

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: [MySQL]单行函数(五)

代码示例

#格式化:
SELECT
       DATE_FORMAT(CURDATE(),'%Y-%M-%D'),
       DATE_FORMAT(NOW(),'%Y-%m-%d'),
       TIME_FORMAT(CURTIME(),'%h:%i:%S'),
       DATE_FORMAT(NOW(),'%Y-%M-%D %h:%i:%S %W %w %T %r')
FROM DUAL;

#解析:格式化的逆过程
SELECT
       STR_TO_DATE('2021-October-25th 11:37:30 Monday 1','%Y-%M-%D %h:%i:%S %W %w'),
       GET_FORMAT(DATE,'USA'),
       DATE_FORMAT(CURDATE(),GET_FORMAT(DATE,'USA'))
FROM DUAL;

5. 流程控制函数

流程处理函数可以根据不同的条件,执行不同的处理流程,可以在SQL语句中实现不同的条件选择。

MySQL中的流程处理函数主要包括IF()、IFNULL()和CASE()函数。

IF(value,value1,value2)

如果value的值为TRUE,返回value1,否则返回value2

SELECT last_name,salary,IF(salary >= 6000,'高工资','低工资') "details"
FROM employees;

SELECT last_name,commission_pct,IF(commission_pct IS NOT NULL,commission_pct,0) "details",
salary * 12 * (1 + IF(commission_pct IS NOT NULL,commission_pct,0)) "annual_sal"
FROM employees;

IFNULL(value1, value2)

如果value1不为NULL,返回value1,否则返回value2

SELECT last_name,commission_pct,IFNULL(commission_pct,0) "details"
FROM employees;

CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 … [ELSE resultn] END

相当于Java的if…else if…else…

SELECT last_name,salary,CASE WHEN salary >= 15000 THEN '白骨精'
           WHEN salary >= 10000 THEN '潜力股'
           WHEN salary >= 8000 THEN '小屌丝'
           ELSE '草根' END "details",department_id
FROM employees;

CASE expr WHEN 常量值1 THEN 值1 WHEN 常量值1 THEN 值1 … [ELSE 值n] END

相当于Java的switch…case…

# 查询部门号为 10,20, 30 的员工信息,
# 若部门号为 10, 则打印其工资的 1.1 倍,
# 20 号部门, 则打印其工资的 1.2 倍,
# 30 号部门,打印其工资的 1.3 倍数,
# 其他部门,打印其工资的 1.4 倍数
SELECT employee_id,last_name,department_id,salary,CASE department_id WHEN 10 THEN salary * 1.1
                     WHEN 20 THEN salary * 1.2
                     WHEN 30 THEN salary * 1.3
                     ELSE salary * 1.4 END "details"
FROM employees;

6. 加密与解密函数

加密与解密函数主要用于对数据库中的数据进行加密和解密处理,以防止数据被他人窃取。

这些函数在保证数据库安全时非常有用。

加密的操作可以在客户端实现,避免在信息传递给服务端的过程中被他人获取。

PASSWORD(str)

返回字符串str的加密版本,41位长的字符串。加密结果 不可逆 ,常用于用户的密码加密

MySQL8.0中弃用。

对于不可逆的加密,进行验证前后是否一致,可以匹配暗文。多次加密的结果一致。

MD5(str)

返回字符串str的md5加密后的值,也是一种加密方式。若参数为NULL,则会返回NULL 。加密结果 不可逆

对于不可逆的加密,进行验证前后是否一致,可以匹配暗文。多次加密的结果一致。

SHA(str)

从原明文密码str计算并返回加密后的密码字符串,当参数为NULL时,返回NULL。 加密结果 不可逆SHA加密算法比MD5更加安全

对于不可逆的加密,进行验证前后是否一致,可以匹配暗文。多次加密的结果一致。

ENCODE(value,password_seed)

返回使用password_seed作为加密密码,加密value

MySQL8.0中弃用。

DECODE(value,password_seed)

返回使用password_seed作为加密密码,解密value

ENCODE(value,password_seed)函数与DECODE(value,password_seed)函数互为反函数。

MySQL8.0中弃用。

7. MySQL信息函数

MySQL中内置了一些可以查询MySQL信息的函数,这些函数主要用于帮助数据库开发或运维人员更好地对数据库进行维护工作。

VERSION()

返回当前MySQL的版本号

CONNECTION_ID()

返回当前MySQL服务器的连接数

DATABASE(),SCHEMA()

返回MySQL命令行当前所在的数据库

USER(),CURRENT_USER()、SYSTEM_USER(), SESSION_USER()

返回当前连接MySQL的用户名,返回结果格式为 “主机名@用户名”

CHARSET(value)

返回字符串value自变量的字符集

COLLATION(value)

返回字符串value的比较规则

代码示例

SELECT
       VERSION(),
       CONNECTION_ID(),
       DATABASE(),
       SCHEMA(),
       USER(),
       CURRENT_USER(),
       CHARSET('尚硅谷'),
       COLLATION('尚硅谷')
FROM DUAL;

8. 其他函数

FORMAT(value,n)

返回对数字value进行格式化后的结果数据。n表示 四舍五入 后保留到小数点后n位

如果n的值小于或者等于0,则只保留整数部分

SELECT
       FORMAT(123.125,2),
       FORMAT(123.125,0),
       FORMAT(123.125,-2)
FROM DUAL;

CONV(value,from,to)

将value的值进行不同进制之间的转换,value为null返回结果为null。

SELECT
       CONV(16, 10, 2),
       CONV(8888,10,16),
       CONV(NULL, 10, 2)
FROM DUAL;

INET_ATON(ipvalue)

将以点分隔的IP地址转化为一个数字

计算方法:以“192.168.1.100”为例,计算方式为192乘以256的3次方,加上168乘以256的2次方,加上1乘以256,再加上100。

INET_NTOA(value)

将数字形式的IP地址转化为以点分隔的IP地址

INET_NTOA(value) 与INET_ATON(ipvalue) 实现的功能相反

SELECT
       INET_ATON('192.168.1.100'),
       INET_NTOA(3232235876)
FROM DUAL;

BENCHMARK(n,expr)

将表达式expr重复执行n次。用于测试MySQL处理expr表达式所耗费的时间

#BENCHMARK()用于测试表达式的执行效率
SELECT
       BENCHMARK(10000000,MD5('mysql'))
FROM DUAL;

CONVERT(value USING char_code)

将value所使用的字符编码修改为char_code

可以实现字符集的转换

SELECT
       CHARSET('atguigu'),
       CHARSET(CONVERT('atguigu' USING 'gbk'))
FROM DUAL;


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
25天前
|
存储 SQL NoSQL
mysql存储过程和存储函数
mysql存储过程和存储函数
|
2月前
|
关系型数据库 MySQL Serverless
MYSQL数字函数:不可不知的数据处理利器
MYSQL数字函数是数据处理的得力助手,高效、准确且灵活。从基础数学运算到复杂数据转换,如ROUND、CEILING、FLOOR等,它们都能轻松胜任。ROUND函数实现数据四舍五入,而CEILING和FLOOR则分别进行向上和向下取整。这些函数不仅提升数据处理效率,还保障数据精确性和一致性。在数据分析、报表生成及业务逻辑处理中,MYSQL数字函数均扮演关键角色。对于数据处理开发者而言,熟练掌握这些函数是不可或缺的技能,它们将极大助力工作并提升职业竞争力。
64 0
|
2月前
|
关系型数据库 MySQL 索引
936. 【mysql】locate函数
936. 【mysql】locate函数
22 2
|
2月前
|
SQL 关系型数据库 MySQL
927. 【mysql】coalesce 函数
927. 【mysql】coalesce 函数
27 3
|
2月前
|
关系型数据库 MySQL
926.【mysql】 date 函数
926.【mysql】 date 函数
86 3
|
2月前
|
关系型数据库 MySQL
925. 【mysql】convert 函数
925. 【mysql】convert 函数
24 3
|
2月前
|
SQL 存储 关系型数据库
【MySQL技术专题】「实战开发系列」一同探索一下数据库的加解密函数开发实战指南之AES系列
【MySQL技术专题】「实战开发系列」一同探索一下数据库的加解密函数开发实战指南之AES系列
47 0
|
3天前
|
关系型数据库 MySQL Linux
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
|
5天前
|
存储 关系型数据库 MySQL
MySQL 格式化日期函数 DATE_FORMAT(), FROM_UNIXTIME() 和 UNIX_TIMESTAMP() 之间区别
MySQL 格式化日期函数 DATE_FORMAT(), FROM_UNIXTIME() 和 UNIX_TIMESTAMP() 之间区别
|
5天前
|
关系型数据库 MySQL 数据库
【MySQL】:高效利用MySQL函数实用指南
【MySQL】:高效利用MySQL函数实用指南
7 0