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;
相关推荐
会编程的土豆8 分钟前
数据库范式
数据库·oracle
L16247611 分钟前
MySQL 全环境生产快速安装 + 完整配置手册(整合国产银河麒麟适配 + 主从补充版)
数据库·mysql
yio_yin14 分钟前
Spring事务管理(数据一致性)
数据库·sql·spring
前端世界1 小时前
MySQL 基础入门(学习第4天)——约束与 DML 操作详解
数据库·学习·mysql
nianniannnn2 小时前
Qt QMessageBox知识点
开发语言·数据库·qt
—Miss. Z—2 小时前
计算机二级MySQL——简单应用题(存储过程&存储函数)
数据库·oracle·php
Csvn2 小时前
📊 SQL 入门 Day 9:CTE(公用表表达式)— 让 SQL 像写代码一样优雅
后端·sql
Vect__3 小时前
MySQL 数据类型和约束:从字段设计到表结构建模
数据库·mysql
糖果店的幽灵3 小时前
langgraph的分支结构之 - 静态分支详解
java·服务器·数据库·langgraph
虹科网络安全3 小时前
艾体宝新闻|从 SQL 注入到服务器接管:CVE-2026-57517 暴露 Web 管理面板的供应链与安全编码风险
服务器·前端·sql