MySQL编程函数

参考文献:《MySQL8数据库原理与实战》麻进玲、陈婷、陈昌平 机械工业出版社

目录

1.字符串函数

2.数值函数

3.日期和时间函数

4.系统信息函数

5.流程控制函数

6.常见聚合函数 


1.字符串函数

字符串函数表

Ascii(char)

返回字符的ASCI码值

Bit_length(str)

返回字符串的比特长度

Concat(s1, s2, …, sn)

将sl,s2,…,sn 连接成字符串,任一参数为NULL则返回NULL

Insert(str, x, y ,instr)

将字符串sr从第x位置开始,y个字符长的子串替换为字符中instr,返回结果

Find_in_set(str, list)

分析逗号分隔的list列表,如果发现str、返回str在list中的位置

Lcase(str)、Lower(str)

返回将字符串sr中所有字符转变为小写后的结果

Left(str, x)

返回字符串s中最左边的x个字符

Length(str)

返回字符串中的字符数

Ltrim(str)

从字符串str中切掉开头的空格

Position(substr, str)

返回子串substr在字符串str中第一次出现的位置,从0开始数

Quote(str)

用反斜杠转义str中的单引号

Repeat(str, x)

返回字符串业重复x次的结果

Reverse(str)

返回颜倒字符申st的结果

Right(str)

返回字符串str中最右边的x个字符

Rtrim(str)

返回字符串str尾部的空格

Strcmp(s1, s2)

比较字符串s1和s2,相同为0,s1大于s2则为1否则为-1

Trim(str)

去除字符串首部和尾部的所有空格

Ucase(str)、Upper(str)

返回将字符串str中所有字符转变为大写后的结果

Concat_ws(s1, s2, …, sn)

将sl,s2,…,sn 连接成字符串,任一参数为NULL则忽略该NULL

Sub_str(str, pos[, len])

从str字符串中指定位置pos开始取一个子串并返回

Char_length(str)

返回字符串的字符个数

Instr(str, substr)

返回str中substr出现的第一次位置

Lpad(str, len, padstr)

在str的左边填充padstr到指定长度len

Rpad(str, len, padstr)

在str的右边填充padstr到指定长度len

Replace(str, from_str, to_str)

在str中找到所有from_str并用to_str替代后返回

Format(X, D[, local])

以“#,###, ###.##”格式化数字X,D指定小数位数,local指定国家语言,默认为en_US

Space(N)

返回由N个空格构成的字符串

Field(str, s1, s2, …, sn)

返回与str相匹配的第一个字符串si的位置,i=1, .., n,s1位置为1,s2位置为2

Elt(pos, s1, s2, .., sn)

返回第pos个位置字符串spos

Substring(str, pos, len)

返回str第pos个位置长度为len的字符串

Mid(str, pos, len)

返回str第pos个位置长度为len的字符串

2.数值函数

数值函数表 

Abs(x)

返回数值x的绝对值

Ceil(x)

返回大于或等于x的最小整数值

Floor(x)

返回小于或等于x的最大整数值

Mod(x,y)

返回结果x模y的值,即求余

Rand()

返回0~1内的随机数

Round(x,y)

返回x四舍五入后的有y位小数的数值

Truncate(x,y)

返回数值x截断为y位小数的数值

3.日期和时间函数

日期和时间函数表

SELECT NOW();  

返回当前日期和时间

SELECT CURDATE();  

返回当前日期(不包括时间)

SELECT CURTIME();   

返回当前时间(不包括日期)

SELECT YEAR(NOW()); 

返回当前年份

SELECT MONTH(NOW()); 

返回当前月份

SELECT DAY(NOW());

返回当前日

SELECT HOUR(NOW()); 

返回当前小时

SELECT MINUTE(NOW());

返回当前分钟

SELECT SECOND(NOW());

返回当前秒

SELECT DATE_ADD('2023-10-01', INTERVAL 1 DAY); 

在指定日期上添加一天

SELECT DATE_SUB('2023-10-01', INTERVAL 1 DAY); 

在指定日期上减去一天

SELECT DATEDIFF('2023-10-10', '2023-10-01'); 

返回两个日期之间的天数差异

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');  

按指定格式(年-月-日)返回当前日期

SELECT DATE_FORMAT(NOW() ,'%Y-%m-01');

返回当前月份的第一天

SELECTEXTRACT(YEARFROMNOW()), EXTRACT(MONTHFROMNOW()); 

返回当前日期的年份和月份

SELECT MAKEDATE(YEAR(NOW()), 1);  

返回当前年份的第一天

SELECT MAKEDATE(YEAR(NOW()), 1) +INTERVAL QUARTER(NOW()) QUARTER -INTERVAL 1 QUARTER; 

返回当前季度的第一天

SELECT DATE_SUB(NOW(), INTERVAL WEEKDAY(NOW())  DAY);  

返回当前周的第一天(假设周一为第一天)

 SELECT WEEK('YYYY-MM-DD', mode); 

返回日期的周数,默认的周开始日期是星期日,

mode = 0: 周从星期日开始,范围是 0-53;

mode = 1: 周从星期一开始,范围是 0-53;

mode = 2: 周从星期日开始,范围是 1-53;

mode = 3: 周从星期一开始,范围是 1-53

4.系统信息函数

系统信息函数表 

Database()

返回当前数据库名

Version()

返回数据库的版本号

User()

返回当前用户

Md5( str )

返回字符串 str 的 Md5 值,对str进行加密,用于对普通的不需要解密的数据进行加密

Password( str )

返回字符串str的加密版本

5.流程控制函数

流程控制函数表

IF 语句

根据条件返回不同的值

SELECTname, salary,

       IF(salary >5000, 'High', 'Low') AS salary_level

FROMemployees;

CASE 语句

根据条件返回不同的值

SELECTname, salary,

       CASE WHEN salary >5000 THEN 'High'

                 WHEN salary BETWEEN 3000 AND 5000 THEN 'Medium'

                 ELSE 'Low'

       END AS salary_level

FROM employees;

IF NULL / COALESCE 函数

使用 IFNULL 函数替换NULL值(MySQL)

 

使用 COALESCE 函数替换NULL值(适用于大多数SQL数据库)

SELECT name, IFNULL(bonus, 0) AS bonus
FROM employees;

 

SELECTname, COALESCE(bonus, 0) AS bonus
FROMemployees;

NULLIF 函数

NULLIF 函数用于比较两个表达式,

如果它们相等则返回NULL,

否则返回第一个表达式的值。

SELECT name, NULLIF(salary, 0) AS salary
FROM employees;

6.常见聚合函数 

常见聚合函数表 

功能

示例

解释

计算列的总和

SELECT SUM(salary) FROM employees; 

计算员工工资的总和

计算列的平均值

SELECT AVG(salary) FROM employees;

计算员工工资的平均值

计算列的最大值

SELECT MAX(salary) FROM employees; 

计算员工工资的最大值

计算列的最小值

SELECT MIN(salary) FROM employees;

计算员工工资的最小值

计算行数

SELECT COUNT(*) FROM employees;

计算员工的总数

计算非空的行数

SELECT COUNT(salary) FROM employees;

计算工资字段非空值的数量

合并两个查询的结果集,并去除重复的行

SELECT name FROM employees
UNION SELECT name FROM customers;

合并员工和客户的名字,并去除重复的名字

合并两个查询的结果集,并保留重复的行

SELECT name FROM employees
UNION ALL SELECT name FROM customers;

合并员工和客户的名字,并保留重复的名字

  • 29
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MySQL 中没有直接的“爆炸函数”(explode function),但可以使用内置函数 SUBSTRING_INDEX 实现类似的功能。SUBSTRING_INDEX 函数的语法如下: ``` SUBSTRING_INDEX(str,delim,count) ``` 其中,str 是要处理的字符串,delim 是分隔符,count 是要返回的子字符串的个数。例如,如果要将字符串 "one,two,three" 按照逗号分隔,得到第二个子字符串 "two",可以使用以下语句: ``` SELECT SUBSTRING_INDEX('one,two,three', ',', 2); ``` 输出结果为:`one,two`。 如果要实现类似于 PHP 中的 explode 函数,可以使用 SUBSTRING_INDEX 函数结合 MySQL 的 GROUP_CONCAT 函数和临时表。例如,如果要将字符串 "one,two,three" 按照逗号分隔成多行,可以使用以下语句: ``` SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('one,two,three', ',', n), ',', -1) AS value FROM (SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3) numbers WHERE n <= LENGTH('one,two,three') - LENGTH(REPLACE('one,two,three', ',', '')) + 1; ``` 输出结果为: ``` value ----- one two three ``` 其中,临时表 numbers 包含了要分隔的字符串的子字符串的个数,通过 WHERE 子句限制了子字符串的个数不超过字符串中逗号的个数加一。内部的 SUBSTRING_INDEX 函数用于提取子字符串,最终使用 GROUP_CONCAT 函数将结果拼接成多行。 ### 回答2: MySQL并没有提供"爆炸函数"这个概念。或许你是指MySQL中的EXPLODE()函数,但实际上MySQL并没有内置这个函数。 "爆炸函数"通常是指在其他编程语言中用于将字符串分割成数组的函数,而MySQL中没有单独的函数可以直接实现该功能。但是,我们可以使用其他MySQL内置的函数来达到类似的效果。 例如,可以使用SUBSTRING_INDEX()函数和GROUP_CONCAT()函数来实现类似于explode()函数的分隔字符串操作。 具体方法如下: 1. 使用SUBSTRING_INDEX()函数将字符串分割成多个部分:例如,SUBSTRING_INDEX('a,b,c', ',', 1)将返回'a',SUBSTRING_INDEX('a,b,c', ',', -1)将返回'c'。 2. 使用GROUP_CONCAT()函数将分割后的多个部分重新合并成一个字符串:例如,SELECT GROUP_CONCAT(SUBSTRING_INDEX('a,b,c', ',', 1))将返回'a,b,c'。 通过将这两个函数结合使用,可以模拟实现类似于explode()函数的功能。 当然,也可以通过编写自定义函数来实现类似的功能。自定义函数可以使用循环和字符串操作来实现对字符串的分割和拼接。这样,就能够实现"爆炸函数"的功能。 总而言之,MySQL没有内置的"爆炸函数",但我们可以使用其他的内置函数或编写自定义函数来实现类似的功能。 ### 回答3: MySQL中并没有"爆炸函数"这个术语。也许你指的是MySQL数据库中的某个函数或语句,可能会在某些情况下导致意外的结果或运行错误的情况。 在MySQL中,有一些函数和语句在使用时需要谨慎,因为它们可能会导致一些可能不符合预期的结果。例如,使用不正确的条件语句可能导致查询结果不正确,或者使用不合理的参数可能导致函数无法正常工作。 此外,可能存在SQL注入问题,这是一种常见的数据库攻击方式。如果没有正确的对用户输入进行验证和过滤,恶意用户可能会通过构造恶意的输入来执行非法的SQL语句,导致数据泄露、破坏或越权访问。 为了避免这些问题,我们应该始终遵循数据库最佳实践。确保在编写SQL语句时使用合适的条件语句和参数,以及正确地对用户输入进行验证和过滤。此外,定期更新和维护MySQL软件,以确保安全性和功能的稳定性。 总结来说,尽管MySQL数据库本身没有"爆炸函数"这个概念,但是在使用MySQL时,我们需要注意一些可能导致预期之外结果的函数和语句,同时需要采取措施来防御SQL注入等安全问题,以确保数据库的正常运行和数据的安全性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值