MySQl常用函数解析

1. LEAST 函数:

返回多个值中的最小值

LEAST(value1, value2, ..., valueN)
2. GREATEST 函数:

返回多个值中的最大值

GREATEST(value1, value2, ..., valueN)

字符串比较规则:

  • 从字符串的第一个字符开始,逐个字符进行比较,直到找到不同的字符为止。如果字符串的前几个字符相同,则比较下一个字符。
  • 字符顺序决定大小:比如'A' < 'B''a' < 'b',如果一个字符串是另一个字符串的前缀,则短的字符串被认为更小。例如,'abc' < 'abcd'
SELECT GREATEST('apple', 'banana', 'grape') AS max_value; --grape
3.字符串函数
  • concat(s1,s2,...,sn) : 拼接字符串, 把s1,s2,sn拼接成一个字符串
  • lower(str) : 把字符串str转化为小写; upper转为大写
  • lpad(str,n,pad) : 左填充,用字符串pad对str的左边进行填充,达到n个字符串长度 ; rpad()右填充
  • trim(str) : 去掉字符串头部和尾部的空格
  • substring(str,start,len) : 返回字符串str从start位置开始len长度的字符串
SELECT SUBSTRING('wjq','3',1)  
FROM DUAL

SELECT RPAD('wjq',7,'gfgkhj')
FROM DUAL
4.数值函数
  • ceil(x) : 向上取整; floor(x):向下取整
  • mod(x/y) : 返回x/y的模
  • rand(): 返回0到1内的随机数
  • round(x,y): 求x四舍五入的值,保留y位小数
5.日期函数
  • curdate(): 返回当前日期
  • curtime(): 返回当前时间
  • now():返回当前日期和时间
  • year(date): 返回指定date的年份
  • month(date): 获取指定date的月份
  • day(date): 获取指定date的日期
  • date_add(date,interval expr type) :返回一个日期/时间值加上expr时间间隔后的时间值
  • datediff(date1,date2): 返回这两个时间之间的天数
  • DATEDIFF(end_date, start_date):返回两个日期的差值
6.流程函数
  • IF(value,t,f) 如果value为true,则返回t,否则返回f

  • IFNULL(value1,value2) 如果value1不为空,返回value1,否则返回value2

  • CASE WHEN [val] THEN [res1] … ELSE [default] END 如果val1为true,返回res1,…否则返回default默认值

  • CASE[expr] WHEN [val]THEN[res1]... ELSE[default]` END 如果expr的值等于val1,返回res1,…否则返回default默认值

SELECT IF(1 > 0, 'True', 'False');

SELECT IFNULL(NULL, 'Default Value');

SELECT CASE WHEN score >= 60 THEN 'Pass' ELSE 'Fail' END;

SELECT CASE grade WHEN 'A' THEN 'Excellent' WHEN 'B' THEN 'Good' ELSE 'Average' END;

7.聚合函数
  • COUNT():计算一列中的行数或非空值的个数
SELECT COUNT(*) FROM table_name;
  • SUM():计算一列的总和。
SELECT SUM(column_name) FROM table_name;
  • AVG():计算平均值。
SELECT AVG(column_name) FROM table_name;
  • MAX():返回列中最大值。
SELECT MAX(column_name) FROM table_name;

  • MIN():返回列中最小值。
SELECT MIN(column_name) FROM table_name;
  • GROUP_CONCAT() (MySQL):将列中的值连接成一个字符串。
SELECT GROUP_CONCAT(column_name) FROM table_name;
8.IFNULL函数

检查表达式的值是否为 NULL。如果是 NULL,则返回一个指定的替代值;如果不是 NULL,则返回表达式原来的值。

语法
IFNULL(expression, alt_value)
  • expression:要检查的表达式
  • alt_value:当 expressionNULL 时返回的值。
9.count的几种用法

COUNT(*) 会统计表中的所有行数(包括包含 NULL 值的行)

SELECT COUNT(*) FROM table_name;

COUNT(column_name) 只统计列中非 NULL 的值

SELECT COUNT(column_name) FROM table_name;

COUNT(DISTINCT column_name) 统计列中不同值的数量,忽略重复值和 NULL 值.

SELECT COUNT(DISTINCT column_name) FROM table_name;

--字符串函数  
select  concat('warren','ricci') from dual;-- 拼接字符串  
  
select lower('RICCI'); --转为小写  
  
select upper('ricci');-- 转为大写  
  
select lpad('1',5,'0');-- 左填充,使用'0'对'1'左边进行填充,达到10个字符串长度  
  
select rpad('1',5,'0');-- 右填充,使用'0'对'1'右边进行填充,达到10个字符串长度  
  
select trim(' warren '); --去除头部和尾部的空格  
  
select substring('Warren',2,3); --截取字符串,从索引2位置开始(第一个字符索引为1),截取长度为3  
  
  
  
--数值函数  
select ceil(4.5);-- 向上取整  
  
select floor(4.5);-- 向下取整  
  
select mod(3,4); --返回3/4的模  
  
select rand(); --返回一个0到1的随机数  
  
select round(4.336,2);-- 四舍五入,保留两位小数  
  
  
  
--日期函数  
select curdate();-- 当前日期  
  
select curtime();-- 当前时间  
  
select now();-- 当前时间和日期  
  
select  year(now()); -- 查看日期所属年份  
  
select month(now()); -- 查看日期所属月份  
  
select day(now()); -- 查看日期的号数  
  
select date_add('2023-12-03',interval 70 day); --从某一个日期往后推指定天数  
select date_add(now(),interval 70 day); --从某一个日期往后推指定天数  
select date_add(now(),interval 70 month); --从某一个日期往后推指定月数  
select date_add(now(),interval 70 year); --从某一个日期往后推指定年数  
  
select datediff(now(),'2023-11-20'); -- datddiff(起始时间,结束时间),返回起始时间和结束时间之间的天数  
  
  
# 流程函数  
select if(true,'warren','ricci'); -- if(value,t,f),如果value为true,返回t,否则返回f  
  
select ifnull(null,'Warren');-- ifnull(value1,value2),如果value1不为空,返回value1,否则返回value2,空字符串:''不为空  
  
use `database example`;  
SELECT 职位,(CASE 旷工  
           WHEN '1' THEN '优秀'  
           ELSE '不合格'  
       END) as '旷工情况表'  
FROM works;  
  
SELECT 职位,(CASE  
           WHEN 旷工<=1 THEN '优秀'  
           when 旷工=3 then '太差了'  
           ELSE '还行'  
       END) as '旷工情况表'  
FROM works; -- 两种case语句
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值