数据库基础-函数

本文介绍了SQL数据库中的各种基础函数,包括字符串处理、数值运算、日期操作以及流程控制函数,如concat、lower/upper、lpad/rpad、trim、substring、rand、datediff、IF、IFNULL和CASEWHENTHENELSEEND等,并通过实际应用示例进行讲解。
摘要由CSDN通过智能技术生成

 数据库笔记链接

         数据库基础-SQL语句

         数据库基础-函数

         数据库基础-约束

        数据库基础-多表查询

1.字符串函数

-- 使用方法 
select 函数名();

-- concat 字符串连接函数
select concat('hello ', 'MySQL');    -- 结果为hello MySQL


-- lower(str) 字符串全部变小写
select lower('HELlo');               -- 结果为hello
-- uooer(str) 字符串全部变大写
select upper('helLO');               -- 结果为 HELLO

-- lpad(str, n, pad) 用字符串pad填充到 str 的左侧,直到长度等于 n
select lpad('11', 5, '0');           -- 结果为 00011
-- rpad(str, n, pad) 用字符串pad填充到 str 的右侧,直到长度等于 n
select rpad('11', 5, '0');           -- 结果为 11000

select rpad('11', 5, 'ab'); -- 当长度无法填充到 n 时,超出部分自动舍去到长度变为n变为11aba

-- trim(str) 去掉首尾空格,不管中间的空格
select trim('   Hello   MySQL  ');   -- 结果 'Hello   MySQL'

-- substring(str, start, len)  截取str的start位开始长为len的字符串
select substring('12345678', 3, 5);  -- 结果为34567, 从第三位字符3开始,长度为5的字符串
-- 主要start不能从0开始




例如:
将student表中学生的学号id变为5位,不足前补0
update student set id = lpad(id, 5, '0');

2.数值函数

 举例应用:

-- 生成一个6位数的随机验证码
select lpad(round(rand() * 1000000, 0), 6, '0');  -- 生成随机数,并乘1e6变成有6为整数的值
-- 用round保留0位小数,若不足6为用lpad前补0

3.日期函数

select 函数名(参数); -- 直接使用

-- 查询员工入职天数并按入职天数降序排序

select name, datediff(curdate(), entrydate) as 'entrydates' from emp order by entrydates desc;

4.流程函数

-- if
select if(1 + 1 == 2, 'true', 'false');  -- 返回true
select if(1 + 1 != 2, 'true', 'false');  -- 返回false

-- ifnull
select ifnull('OK', null);               -- 返回OK
select ifnull(null, 'false');            -- 返回false

-- case when then else end
-- 查询emp表中员工的姓名和工作地址(北京/上海 ---> 一线城市, 其他 ---> 二线城市)

select 
    name, 
    (case workaddress when '北京' then '一线城市' when '上海' then '一线城市' 
    else '二线城市' end)  as '工作地址'
from emp;


-- 学生表中有学号,姓名,数学,语文,英语,这几个字段
-- 打印学生信息,但大于85分打印为优秀, 大于等于60为及格,60以下为不及格


select 
    id,
    name,
    (case when math >= 85 then '优秀' when math >= 60 then '及格' else '不及格' end) '数学',
    (case when chinese >= 85 then '优秀' when chinese >= 60 then '及格' else '不及格' end) '语文',
    (case when english >= 85 then '优秀' when english >= 60 then '及格' else '不及格' end) '英语'
from students;

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值