sql-函数

函数:一段可以直接被另一段程序调用的程序或代码。

字符串函数

函数 功能
CONCAT(s1, s2, ..., sn) 字符串拼接,将s1, s2, ..., sn拼接成一个字符串
LOWER(str) 将字符串全部转为小写
UPPER(str) 将字符串全部转为大写
LPAD(str, n, pad) 左填充,用字符串pad对str的左边进行填充,达到n个字符串长度
RPAD(str, n, pad) 右填充,用字符串pad对str的右边进行填充,达到n个字符串长度
TRIM(str) 去掉字符串头部和尾部的空格
SUBSTRING(str, start, len) 返回从字符串str从start位置起的len个长度的字符串
REPLACE(column, source, replace) 替换字符串
sql 复制代码
--concat
SELECT CONCAT('hello','mysql');
--返回 hello mysql

--lower
select lower('Hello');
--返回 hello

-- upper
SELECT UPPER('Hello');
--返回 HELLO

--lpad 左填充
SELECT LPAD('01',5,'-');
--返回 ---01

--rpad 右填充
SELECT RPAD('01',5,'-');
--返回 01---

-- trim 去除空格
SELECT TRIM(' Hello World ');
--返回 Hello World

-- substring 切片(起始索引为1)
SELECT SUBSTRING('Hello World', 1, 5);
--返回 Hello

sql 复制代码
-- 员工工号统一为5位数,不足5位的全部在前面补0.
UPDATE emp
SET workno = LPAD(workno, 5, '0');

数值函数

函数 功能
CEIL(x) 向上取整
FLOOR(x) 向下取整
MOD(x, y) 返回x/y的模(余数)
RAND() 返回0~1内的随机数
ROUND(x, y) 求参数x的四舍五入值,保留y位小数

日期函数

常用函数:

函数 功能
CURDATE() 返回当前日期
CURTIME() 返回当前时间
NOW() 返回当前日期和时间
YEAR(date) 获取指定date的年份
MONTH(date) 获取指定date的月份
DAY(date) 获取指定date的日期
DATE_ADD(date, INTERVAL expr type) 返回一个日期/时间值加上一个时间间隔expr后的时间值
DATEDIFF(date1, date2) 返回起始时间date1和结束时间date2之间的天数
sql 复制代码
--date_add,当前时间推后70天
SELECT date_add (now(), INTERVAL 70 DAY);
--date_add,当前时间推后70月
SELECT date_add (now(), INTERVAL 70 MONTH);
--datediff
select datediff('2021-12-01','2021-10-01');--第一个日期减第二个日期

--查询所有员工的入职天数,并根据入职天数倒叙排序
SELECT name, DATEDIFF(CURDATE(), entrydate) AS entrydays 
FROM emp 
ORDER BY entrydays  DESC;

流程控制函数

常用函数:

函数 功能
IF(value, t, f) 如果value为true,则返回t,否则返回f
IFNULL(value1, value2) 如果value1不为空,返回value1,否则返回value2
CASE WHEN [ val1 ] THEN [ res1 ] ... ELSE [ default ] END 如果val1为true,返回res1,... 否则返回default默认值
CASE [ expr ] WHEN [ val1 ] THEN [ res1 ] ... ELSE [ default ] END 如果expr的值等于val1,返回res1,... 否则返回default默认值
sql 复制代码
select
    name,
    (case when age > 30 then '中年' else '青年' end)
from employee;
select
    name,
    (case workaddress when '北京市' then '一线城市' when '上海市' then '一线城市' else '二线城市' end) as '工作地址'
from employee;
相关推荐
兩尛1 小时前
订单状态定时处理、来单提醒和客户催单(day10)
java·前端·数据库
web2u1 小时前
MySQL 中如何进行 SQL 调优?
java·数据库·后端·sql·mysql·缓存
Elastic 中国社区官方博客2 小时前
使用 Elasticsearch 导航检索增强生成图表
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
小金的学习笔记2 小时前
RedisTemplate和Redisson的使用和区别
数据库·redis·缓存
新知图书2 小时前
MySQL用户授权、收回权限与查看权限
数据库·mysql·安全
文城5212 小时前
Mysql存储过程(学习自用)
数据库·学习·mysql
沉默的煎蛋3 小时前
MyBatis 注解开发详解
java·数据库·mysql·算法·mybatis
呼啦啦啦啦啦啦啦啦3 小时前
【Redis】事务
数据库·redis·缓存
HaoHao_0103 小时前
AWS Serverless Application Repository
服务器·数据库·云计算·aws·云服务器
C语言扫地僧3 小时前
MySQL 事务及MVCC机制详解
数据库·mysql