交友软件网站建设,韶关建网站,成都装修公司哪家好,展示型网站怎么做文章目录 函数字符串函数数值函数日期函数流程函数 函数
函数#xff0c;是指一段可以直接被另一段程序调用的程序或代码。
MySQL中内置了许多函数#xff0c;我们只需在合适的场景下调用它们即可#xff0c;调用函数查询结果直接使用SELECT即可#xff0c;并且可以嵌套使… 文章目录 函数字符串函数数值函数日期函数流程函数 函数
函数是指一段可以直接被另一段程序调用的程序或代码。
MySQL中内置了许多函数我们只需在合适的场景下调用它们即可调用函数查询结果直接使用SELECT即可并且可以嵌套使用
SELECT functions(parameters);functions函数parameters参数
为了避免多张截图堆叠的问题我们在直接演示环节使用代码块并使用注释来展示函数结果。 字符串函数
常用字符串函数
函数功能CONCAT(S1, S2, …Sn)字符串拼接将S1S2… Sn拼接成一个字符串LOWER(str)将字符串 str 全部转为小写UPPER(str)将字符串 str 全部转为大写LPAD(str, len, pad)左填充用字符串 pad 对 str 的左边进行填充达到 len 个字符串长度RPAD(str, len, pad)右填充用字符串 pad 对 str 的右边进行填充达到 len 个字符串长度TRIM(str)去掉字符串头部和尾部的空格SUBSTRING(str, start, len)返回字符串 str 从 start 位置起的 len 个长度的字符串第一个字符的位置是1
对于字符串函数MySQL能够自动处理非字符串类型的参数并将它们转换为字符串后再进行指定操作 直接演示
SELECT CONCAT(Hello, MySQL!);
SELECT CONCAT(123, 12.5);
/*
结果1Hello MySQL!
结果212312.5
*/SELECT LOWER(Hello MySQL!);
SELECT LOWER(123);
/*
结果1hello mysql!
结果2123
*/SELECT UPPER(Hello MySQL!);
SELECT UPPER(12.3);
/*
结果1HELLO MYSQL!
结果212.3
*/SELECT LPAD(1, 5, 0);
SELECT LPAD(ok, 3, o);
/*
结果100001
结果2ook
*/SELECT RPAD(1, 5, 0);
SELECT RPAD(ok, 3, o);
/*
结果110000
结果2oko
*/SELECT TRIM( i am fine. );
/*
结果i am fine.
*/SELECT SUBSTRING(Hello MySQL!, 1, 5);
SELECT SUBSTRING(123456, 2, 4);
/*
结果1Hello
结果22345
*/场景演示
对于下表修改id数据列的格式3位数不够的左边填充0 数值函数
常用数值函数
函数功能CEIL(x)向上取整FLOOR(x)向下取整MOD(x, y)返回 x/y 的模RAND()返回 0~1 内的随机数ROUND(x, y)求参数 x 的四舍五入的值保留 y 位小数 直接演示
SELECT CEIL(1.1);
# 结果2SELECT FLOOR(1.9);
# 结果1SELECT MOD(5, 11);
# 结果5SELECT RAND();
# 结果0~1的随机数例如某次执行的结果为0.9047801484398359SELECT ROUND(12.55, 1);
# 结果12.6场景演示
查询所有人的成绩要求查询结果中成绩没有小数位四舍五入 日期函数
常用日期函数
函数功能CURDATE()返回当前日期 YYYY-MM-DDCURTIME()返回当前时间 HH:MM:SSNOW()返回当前日期和时间 YYYY-MM-DD HH:MM:SSYEAR(date)获取指定 date 的年份MONTH(date)获取指定 date 的月份DAY(date)获取指定 date 的日期DATE_ADD(date, INTERVAL expr type)返回一个日期/时间值加上一个时间间隔 expr 后的时间值DATEDIFF(date1, date2)返回起始时间 date1 和结束时间 date2 之间间隔的天数
DATE_ADD(date, INTERVAL expr type) 的参数含义如下 date这是你想要添加时间间隔的原始日期。 它可以是一个日期或日期时间表达式比如一个 DATE、DATETIME 或 TIMESTAMP 类型的列或者是一个日期字符串在能够被MySQL解析为有效日期的情况下。INTERVAL这是一个关键字用于指示接下来的参数是一个时间间隔。 它告诉MySQL你想要对前面的日期进行加法操作并且接下来的参数将定义这个加法操作的具体内容。expr这是你想要添加到原始日期上的时间间隔的数量。 它应该是一个整数或整数表达式。例如如果你想要添加3天那么 expr 就是 3。type这是时间间隔的单位。 它告诉MySQL你想要以什么单位来添加时间间隔。type 可以是多种不同的值比如 DAY、MONTH、YEAR、HOUR、MINUTE、SECOND 等。这个参数决定了 expr 的具体含义。例如如果 type 是 DAY那么 expr 就是天数如果 type 是 MONTH那么 expr 就是月数。 直接演示
SELECT CURDATE(); -- 输出当前日期本次运行时日期为2024-08-18SELECT CURTIME(); -- 输出当前时间本次运行时时间为20:49:44SELECT NOW(); -- 输出当前日期和时间本次运行时为2024-08-18 20:50:17SELECT YEAR(2023-04-01); -- 输出: 2023
SELECT YEAR(20230401); -- 输出: 2023注意这取决于MySQL的SQL模式有时需要确保字符串能被正确解析为日期
SELECT YEAR(CURDATE()); -- 输出当前日期的年份 本次运行为2024
SELECT YEAR(NOW()); -- 输出当前日期和时间的年份仅提取年份部分本次运行为2024SELECT MONTH(2023-04-01); -- 输出: 4
SELECT MONTH(20230401); -- 输出: 4注意这取决于MySQL的SQL模式有时需要确保字符串能被正确解析为日期
SELECT MONTH(CURDATE()); -- 输出当前日期的月份 本次运行为8
SELECT MONTH(NOW()); -- 输出当前日期和时间的月份仅提取年份部分本次运行为8SELECT DAY(2023-04-01); -- 输出: 1
SELECT DAY(20230401); -- 输出: 1注意这取决于MySQL的SQL模式有时需要确保字符串能被正确解析为日期
SELECT DAY(CURDATE()); -- 输出当前日期的日期 本次运行为18
SELECT DAY(NOW()); -- 输出当前日期和时间的日期仅提取年份部分本次运行为18SELECT DATE_ADD(2021-11-10, INTERVAL 5 DAY); -- 结果为2021-11-15
SELECT DATE_ADD(2021-11-10, INTERVAL 5 MONTH); -- 结果为2022-04-10
SELECT DATE_ADD(NOW(), INTERVAL 5 YEAR); -- 此次结果为2029-08-18 21:03:18SELECT DATEDIFF(2011-03-30, 2010-01-12); -- 结果为442
SELECT DATEDIFF(2011-03-30, 2012-01-12); -- 结果为-288所以实际上是左参数‘减去’右参数早 - 晚 负数场景演示
比如有张学生信息表其中有个入学时间的字段我们想查询学生的入学了多长时间并按照时间降序排序就会写出类似如下语句
SELECT name, DATEDIFF(NOW(), en_time) 时间 FROM student ORDER BY 时间 DESC;流程函数
常用流程函数
函数功能IF(value, t, f)如果 value 为 true返回 t否则返回 fIFNULL(value1, value2)如果 value 不为空返回 value1否则返回 value2CASE WHEN [val1] THEN [ret1]… ELSE [default] END如果 val1 为 true返回 ret1… 否则返回 defaultCASE [expr] WHEN [val1] THEN [ret1]… ELSE [default] END如果 expr 的值等于 val1返回 ret1… 否则返回 default
在SQL的CASE语句中条件是从上到下依次评估的一旦找到满足条件的分支就会执行该分支的语句并结束CASE表达式的评估。 直接演示
SELECT IF(20 11, OK, NO); -- 结果为OK
SELECT IF(20 11, 20, 11); -- 结果为11SELECT IFNULL(NULL, 12); -- 结果为12
SELECT IFNULL(10, 12); -- 结果为10SELECT CASE WHEN 66 90 THEN one WHEN 66 80 THEN two ELSE default END; -- 结果为default
SELECT CASE WHEN 66 60 THEN one WHEN 66 50 THEN two ELSE default END; -- 结果为oneSELECT CASE 43 WHEN 20 THEN 1 WHEN 43 THEN 2 ELSE 3 END; -- 结果为2
SELECT CASE mysql WHEN nosql THEN 1 WHEN 43 THEN 2 ELSE 3 END; -- 结果为3 场景演示
查询学生成绩要求1. 90 显示优秀 2. 60 显示及格 3. 否则显示不及格如下 完