有那些做自媒体短视频的网站,百度云登录入口,信息网站建设,网站建设 月嫂 模板华子目录 sql函数聚合函数数值型函数字符串函数日期和时间函数流程控制函数case用法 sql函数
聚合函数
聚合函数是对一组值进行运算#xff0c;并返回单个值。也叫分组函数#xff0c;具体用法请参考该博文 https://blog.csdn.net/huaz_md/article/details/136081708?spm1… 华子目录 sql函数聚合函数数值型函数字符串函数日期和时间函数流程控制函数case用法 sql函数
聚合函数
聚合函数是对一组值进行运算并返回单个值。也叫分组函数具体用法请参考该博文 https://blog.csdn.net/huaz_md/article/details/136081708?spm1001.2014.3001.5501
数值型函数
MySQL提供了许多数值型函数可以对数值进行各种操作和计算。以下是一些常用的数值型函数及其用法1. abs(x)返回x的绝对值。例如ABS(-10) 将返回 10。2. ceil(x) 或 ceiling(x)返回大于或等于x的最小整数值。例如CEIL(10.1) 将返回 11。(向上取整)3. floor(x)返回小于或等于x的最大整数值。例如FLOOR(10.9) 将返回 10。向下取整4. round(x, d)将x四舍五入到d位小数。例如ROUND(10.12345, 2) 将返回 10.12。5. truncate(x, d)将x截断为d位小数。例如TRUNCATE(10.12345, 2) 将返回 10.12。6. rand()返回0和1之间的随机数。例如SELECT RAND() 将返回一个随机数。7. pow(x, y) 或 power(x, y)返回x的y次幂。例如POW(2, 3) 将返回 8。8. sqrt(x)返回x的平方根。例如SQRT(16) 将返回 4。9. mod(x, y)返回x除以y的余数。例如MOD(10, 3) 将返回 1。10. sign(x)返回x的符号如果x为负数则返回-1如果x为正数则返回1如果x为0则返回0。例如SIGN(-10) 将返回 -1。这些函数可以在SELECT语句中使用用于处理数值数据并返回计算结果。mysql select abs(-9);
---------
| abs(-9) |
---------
| 9 |
---------mysql select * from employee;
---------------------------------------------------------
| id | name | job | salary | bonus | job_id |
---------------------------------------------------------
| 101 | 麦当 | 后端研发 | 25000 | 5000 | 1003 |
| 102 | 咕咚 | 网络运维 | 15000 | 3000 | 1003 |
| 103 | 迪亚 | 测试工程师 | 12000 | 2000 | 1003 |
| 104 | 米龙 | 后端开发 | 20000 | 3500 | 1003 |
| 105 | 极光 | 前端开发 | 15000 | 2500 | 1003 |
| 106 | 村长 | 人力资源 | 10000 | 500 | 1001 |
| 107 | 五条人 | 销售工程师 | 14000 | 7000 | 1002 |
| 108 | 皇帝 | 董事长 | 30000 | 10000 | 1004 |
---------------------------------------------------------mysql select abs(salary) from employee where id101;
-------------
| abs(salary) |
-------------
| 25000 |
-------------mysql select ceil(10.9);
------------
| ceil(10.9) |
------------
| 11 |
------------mysql select floor(10.9);
-------------
| floor(10.9) |
-------------
| 10 |
-------------mysql select round(10.678,2);
-----------------
| round(10.678,2) |
-----------------
| 10.68 |
-----------------mysql select truncate(10.678,2);
--------------------
| truncate(10.678,2) |
--------------------
| 10.67 |
--------------------在MySQL中RAND()函数用于生成一个介于0和1之间的随机数。RAND()函数不接受任何参数。以下是RAND()函数的用法示例1. 生成一个随机数SELECT RAND();这将返回一个介于0和1之间的随机数例如 0.724653.2. 生成一个随机整数SELECT FLOOR(RAND() * 100) AS random_int;这将返回一个介于0和99之间的随机整数例如 42.3. 生成一个在指定范围内的随机数SELECT RAND() * (max_value - min_value) min_value AS random_number;其中 max_value 和 min_value 是您希望的范围的上限和下限。例如要生成一个介于10和20之间的随机数SELECT RAND() * (20 - 10) 10 AS random_number;注意由于RAND()函数在每次查询时都会生成一个新的随机数因此多次调用RAND()函数将返回不同的值。mysql select rand();#生成0-1之间的小数
--------------------
| rand() |
--------------------
| 0.7741850370300795 |
--------------------mysql select floor(rand()*10);#生成0-10之间的整数
------------------
| floor(rand()*10) |
------------------
| 6 |
------------------mysql select floor(rand()*(20-10)10);#生成10-20之间的整数
--------------------------
| floor(rand()*(20-10)10) |
--------------------------
| 15 |
--------------------------mysql select pow(2,3);
----------
| pow(2,3) |
----------
| 8 |
----------mysql select power(2,3);
------------
| power(2,3) |
------------
| 8 |
------------mysql select sqrt(16);
----------
| sqrt(16) |
----------
| 4 |
----------mysql select mod(10,3);
-----------
| mod(10,3) |
-----------
| 1 |
-----------mysql select sign(-10);
-----------
| sign(-10) |
-----------
| -1 |
-----------mysql select sign(0);
---------
| sign(0) |
---------
| 0 |
---------mysql select sign(20);
----------
| sign(20) |
----------
| 1 |
----------字符串函数
MySQL提供了许多字符串函数用于对字符串进行各种操作和处理。以下是一些常用的字符串函数及其用法1. concat(str1, str2, ...)将多个字符串连接在一起。例如CONCAT(Hello, , World) 将返回 Hello World。2. substr(str, start, length) 或 substring(str, start, length)返回从字符串中指定位置开始的指定长度的子字符串。例如SUBSTRING(Hello World, 1, 5) 将返回 Hello。3. upper(str)将字符串转换为大写。例如UPPER(hello) 将返回 HELLO。4. lower(str)将字符串转换为小写。例如LOWER(WORLD) 将返回 world。5. length(str) 或 char_length(str)返回字符串的长度。例如LENGTH(Hello World) 将返回 11。6. trim([{BOTH | LEADING | TRAILING} [remstr] FROM] str)删除字符串两端或指定字符的空格。例如TRIM( hello ) 将返回 hello。7. replace(str, from_str, to_str)将字符串中的指定子字符串替换为另一个字符串。例如REPLACE(Hello World, World, John) 将返回 Hello John。8. reverse(str)反转字符串。例如REVERSE(Hello) 将返回 olleH。9. left(str, length)返回字符串左边的指定长度的子字符串。例如LEFT(Hello World, 5) 将返回 Hello。10. right(str, length)返回字符串右边的指定长度的子字符串。例如RIGHT(Hello World, 5) 将返回 World。11. strcmp(str1, str2) 函数用于比较两个字符串 str1 和 str2。- 如果 str1 小于 str2则返回负值 (-1)。- 如果 str1 等于 str2则返回 0。- 如果 str1 大于 str2则返回正值 (1)。SELECT STRCMP(apple, banana); -- 返回负值 (-1)因为apple在字母表中排在banana之前SELECT STRCMP(apple, apple); -- 返回 0因为两个字符串相等SELECT STRCMP(banana, apple); -- 返回正值 (1)因为banana在字母表中排在apple之后12. locate(substr, str) 函数用于在字符串 str 中查找子字符串 substr 的位置。如果找到则返回 substr 在 str 中第一次出现的位置从1开始如果未找到则返回0。LOCATE 函数还可以指定起始搜索位置。以下是 LOCATE 函数的用法示例SELECT LOCATE(or, Hello World); -- 返回 8因为or在Hello World中的位置是从第8个字符开始SELECT LOCATE(or, Hello World, 5); -- 返回 8从第5个字符开始搜索所以找到的位置仍然是第8个字符SELECT LOCATE(banana, apple); -- 返回 0因为banana未在apple中找到在上面的示例中第一个参数是要查找的子字符串第二个参数是要搜索的字符串第三个参数是可选的起始搜索位置。13. instr(str, substr) 函数用于返回子字符串 substr 在字符串 str 中第一次出现的位置。如果 substr 不在 str 中则返回0。INSTR 函数的用法示例如下SELECT INSTR(foobarbar, bar); -- 返回 4因为bar在foobarbar中的第一个出现位置是从第4个字符开始SELECT INSTR(foobar, baz); -- 返回 0因为baz不在foobar中
instr 函数还可以指定起始搜索位置SELECT INSTR(foobarbar, bar, 5); -- 返回 7从第5个字符开始搜索bar在foobarbar中的下一个出现位置是从第7个字符开始在这个例子中INSTR(foobarbar, bar, 5) 返回的结果是7因为它从第5个字符开始搜索找到了第二个bar出现的位置。14. right(str, len) 函数用于返回字符串 str 的右侧 len 个字符。如果 len 大于 str 的长度则返回整个字符串 str。以下是 RIGHT 函数的用法示例SELECT RIGHT(Hello World, 5); -- 返回 World因为返回字符串的右侧5个字符SELECT RIGHT(Hello, 10); -- 返回 Hello因为返回字符串的右侧10个字符但字符串长度不足10个字符
right 函数通常用于截取字符串的右侧一部分返回指定长度的子字符串。15. insert(str, pos, len, newstr);这种用法用于在字符串的指定位置插入另一个字符串。例如SELECT INSERT(Hello World, 6, 0, Beautiful ); -- 返回 Hello Beautiful World在第6个位置插入Beautiful 在这个例子中INSERT(Hello World, 6, 0, Beautiful ) 将在字符串 Hello World 的第6个位置插入 Beautiful 。16. lpad(目标字符串,10,填充字符)将填充字符填充到目标字符的左边,补足10个mysql select lpad(哈哈哈,10,*);--------------------------| lpad(哈哈哈,10,*) |--------------------------| *******哈哈哈 |--------------------------17. rpad(目标字符串,10,填充字符)mysql select rpad(哈哈哈,10,*);--------------------------| rpad(哈哈哈,10,*) |--------------------------| 哈哈哈******* |--------------------------
这些函数可以在SELECT语句中使用用于处理和操作字符串数据并返回结果。日期和时间函数
MySQL提供了许多用于处理日期和时间的函数。以下是一些常用的日期和时间函数及其用法1. now()返回当前日期和时间。sysdate()select now();select sysdate();2. curdate()返回当前日期。current_date()current_dateselect curdate();select current_date();select current_date;4. curtime()返回当前时间。current_time()current_timeselect current_time();select curtime();select current_time;5. datediff(end_date, start_date)计算两个日期之间的天数差。
mysql SELECT DATEDIFF(2024-03-01, 2024-02-01);
--------------------------------------
| DATEDIFF(2024-03-01, 2024-02-01) |
--------------------------------------
| 29 |
--------------------------------------6. week(date[, mode])返回日期所在年的第几周。
mysql SELECT WEEK(2024-02-26);
--------------------
| WEEK(2024-02-26) |
--------------------
| 8 |
--------------------7. date(字段) 函数用于提取日期或日期/时间表达式的日期部分。它返回一个日期值时间部分被截断为零。DATE() 例如假设有一个包含日期和时间的字段 datetime_field您可以使用 DATE() 函数来提取其日期部分SELECT date(datetime_field) FROM your_table;这将返回 datetime_field 的日期部分时间部分将被截断为零。8. time(字段)函数用于提取日期或日期/时间表达式的时间部分。它返回一个时间值。9. month(字段)获取月份
mysql select month(2023-01-01);
---------------------
| month(2023-01-01) |
---------------------
| 1 |
---------------------10. monthname()获取指定曰期对应的月份的英文名称
mysql select monthname(2023-01-01);
-------------------------
| monthname(2023-01-01) |
-------------------------
| January |
-------------------------11. dayname()获取指定曰期对应的星期几的英文名称
mysql select dayname(2023-01-01);
-----------------------
| dayname(2023-01-01) |
-----------------------
| Sunday |
-----------------------
12. year()获取年份
mysql select year(2023-01-01);
--------------------
| year(2023-01-01) |
--------------------
| 2023 |
--------------------
13 month(字段)获取月份
mysql select month(2023-01-01);
---------------------
| month(2023-01-01) |
---------------------
| 1 |
---------------------
13. day()获取日分
mysql select day(2023-01-01);
-------------------
| day(2023-01-01) |
-------------------
| 1 |
-------------------
14. dayofyear()获取指定曰期是一年中的第几天返回值范围是1~366
mysql select dayofyear(2023-12-12);
-------------------------
| dayofyear(2023-12-12) |
-------------------------
| 346 |
-------------------------mysql select now();
---------------------
| now() |
---------------------
| 2024-02-26 21:45:46 |
---------------------mysql select year(now());
-------------
| year(now()) |
-------------
| 2024 |
-------------mysql select month(now());
--------------
| month(now()) |
--------------
| 2 |
--------------mysql select day(now());
------------
| day(now()) |
------------
| 26 |
------------流程控制函数
在 MySQL 中有一些流程控制函数可以帮助您在查询中实现条件逻辑和控制流程。以下是一些常用的流程控制函数及其用法
IF(condition, true_value, false_value)根据条件返回不同的值。
mysql SELECT IF(1 2, true, false);
----------------------------
| IF(1 2, true, false) |
----------------------------
| true |
----------------------------mysql SELECT IF(2 1, true, false);
--------------------------
| IF(21, true, false) |
--------------------------
| false |
--------------------------CASE类似于 switch 语句根据不同的条件返回不同的值。 SELECT CASE WHEN score 90 THEN AWHEN score 80 THEN BWHEN score 70 THEN CELSE DEND AS grade
FROM students;coalesce(val1, val2, ...)返回参数列表中第一个非空值。
mysql SELECT COALESCE(NULL, default);
---------------------------
| COALESCE(NULL, default) |
---------------------------
| default |
---------------------------mysql SELECT COALESCE(NULL,dsfa ,default);
----------------------------------
| COALESCE(NULL,dsfa ,default) |
----------------------------------
| dsfa |
----------------------------------NULLIF(val1, val2)如果两个值相等则返回 NULL否则返回第一个值。
mysql SELECT NULLIF(5, 5);
--------------
| NULLIF(5, 5) |
--------------
| NULL |
--------------IFNULL(val1, val2)如果第一个值不为 NULL则返回第一个值否则返回第二个值。
mysql SELECT IFNULL(NULL, default);
-------------------------
| IFNULL(NULL, default) |
-------------------------
| default |
-------------------------这些函数可以帮助您在 MySQL 查询中实现复杂的逻辑和条件控制。
case用法
CASE 表达式是 MySQL 中用于实现条件逻辑的强大工具类似于其他编程语言中的 switch 语句。它允许您根据不同的条件返回不同的值。CASE 表达式有两种形式简单形式和搜索形式。 简单形式 case expression或字段when value1 then result1when value2 then result2...else default_result
end在简单形式中expression 或字段的值与 value1、value2 等进行比较如果匹配则返回相应的 result如果没有匹配项则返回 default_result。 例如以下查询根据成绩返回等级 SELECTCASEWHEN score 90 THEN AWHEN score 80 THEN BWHEN score 70 THEN CELSE DEND AS grade
FROMstudent_scores;搜索形式 CASEWHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE default_result
END在搜索形式中每个 WHEN 子句都有一个条件如果条件为真则返回相应的 result否则继续检查下一个 WHEN 子句。 例如以下查询根据人口数量返回城市规模 SELECTcity_name,CASEWHEN population 1000000 THEN 大城市WHEN population 500000 THEN 中等城市ELSE 小城市END AS city_size
FROMcities;CASE 表达式可以嵌套在其他函数或表达式中为复杂的条件逻辑提供了灵活的解决方案。
mysql select * from employee;
---------------------------------------------------------
| id | name | job | salary | bonus | job_id |
---------------------------------------------------------
| 101 | 麦当 | 后端研发 | 25000 | 5000 | 1003 |
| 102 | 咕咚 | 网络运维 | 15000 | 3000 | 1003 |
| 103 | 迪亚 | 测试工程师 | 12000 | 2000 | 1003 |
| 104 | 米龙 | 后端开发 | 20000 | 3500 | 1003 |
| 105 | 极光 | 前端开发 | 15000 | 2500 | 1003 |
| 106 | 村长 | 人力资源 | 10000 | 500 | 1001 |
| 107 | 五条人 | 销售工程师 | 14000 | 7000 | 1002 |
| 108 | 皇帝 | 董事长 | 30000 | 10000 | 1004 |
---------------------------------------------------------mysql select salary 旧工资,- case id- when 101 then salary*2- when 103 then salary-100- else salary- end 新工资- from employee;
----------------------
| 旧工资 | 新工资 |
----------------------
| 25000 | 50000 |
| 15000 | 15000 |
| 12000 | 11900 |
| 20000 | 20000 |
| 15000 | 15000 |
| 10000 | 10000 |
| 14000 | 14000 |
| 30000 | 30000 |
----------------------
#注从case到end构成一个新字段#当遇到id值为101的时候将其对应的salary值*2,当遇到id值为103的时候将其对应的salary-100其余情况的id值salary值不变
mysql select salary 旧工资,- case id- when 101 then salary*2- when 103 then salary-100- else salary- end 新工资,- name- from employee;
---------------------------------
| 旧工资 | 新工资 | name |
---------------------------------
| 25000 | 50000 | 麦当 |
| 15000 | 15000 | 咕咚 |
| 12000 | 11900 | 迪亚 |
| 20000 | 20000 | 米龙 |
| 15000 | 15000 | 极光 |
| 10000 | 10000 | 村长 |
| 14000 | 14000 | 五条人 |
| 30000 | 30000 | 皇帝 |
---------------------------------mysql select * from employee;
---------------------------------------------------------
| id | name | job | salary | bonus | job_id |
---------------------------------------------------------
| 101 | 麦当 | 后端研发 | 25000 | 5000 | 1003 |
| 102 | 咕咚 | 网络运维 | 15000 | 3000 | 1003 |
| 103 | 迪亚 | 测试工程师 | 12000 | 2000 | 1003 |
| 104 | 米龙 | 后端开发 | 20000 | 3500 | 1003 |
| 105 | 极光 | 前端开发 | 15000 | 2500 | 1003 |
| 106 | 村长 | 人力资源 | 10000 | 500 | 1001 |
| 107 | 五条人 | 销售工程师 | 14000 | 7000 | 1002 |
| 108 | 皇帝 | 董事长 | 30000 | 10000 | 1004 |
---------------------------------------------------------#salary在20000以上为高工资在13000-20000之间为中等工资在13000之下为低等工资
mysql select name,- case- when salary 20000 then 高工资- when salary 13000 then 低工资- else 中等工资- end 工资等级- from employee;
-------------------------
| name | 工资等级 |
-------------------------
| 麦当 | 高工资 |
| 咕咚 | 中等工资 |
| 迪亚 | 低工资 |
| 米龙 | 中等工资 |
| 极光 | 中等工资 |
| 村长 | 低工资 |
| 五条人 | 中等工资 |
| 皇帝 | 高工资 |
-------------------------
#注从case到end构成一个新字段