基础SQL 函数

发布于:2024-04-30 ⋅ 阅读:(33) ⋅ 点赞:(0)

在MySQL中内置了很多函数,我们可以通过一段程序或者代码直接调用这个函数

一、字符串函数

下面通过例子来验证这些函数

-- 字符串函数

-- concat函数
select concat("hello ","world");

-- lower函数
select lower("HELLO");

-- upper函数
select upper("heelo");

-- lpad函数
select  lpad("123",5,'0');

-- rpad函数
select rpad("123",5,'0');

-- trim函数
select trim("   hello world  ");

-- substring函数
select substring("1234556789",2,3);

实例说明:

统一一个表的员工工号,不足8位的在前面补0

先查看实例前的员工表

更新字段的值使用updat语句

数值函数

常见的数值函数有

-- 数值函数

-- ceil函数
select ceil(4.5);

-- floor函数
select floor(5.9);

-- mod函数
select mod(100,2);

-- rand函数
select rand();

-- round函数
select round(3.1415926,3);

实例说明

生产一个随机的六位数的验证码

日期函数

-- 日期函数

-- curdate函数 当前日期
select curdate();

-- curtime函数 当前时间
select curtime();

-- now函数 当前日期和时间
select now();

-- year(date)函数 获取date的年份
select year(now());

-- month(date)函数 获取date的月份
select month(now());

-- day(date)函数 获取date的日期
select day(now());

-- date_add(date,interval expr type)函数 返回一个日期/时间值加上时间间隔expr后的时间值
select date_add(now(),interval 30 day);  -- 30天后

-- datediff(date1,datw2)返回起始时间date1和结束时间date2之间的天数
select datediff(curdate(),'1949-10-01');

现在有这样一张表

-- 查询所有员工的入职天数,并根据入职天数倒序排序
select name,datediff(curdate(), entrydate) '入职天数' from emp order by '入职天数' desc ;

流程函数

-- 流程函数

-- if(value,t,f)函数 如果value为true,则返回t,否则返回f
select if(2>3,2,3);

-- ifnull(value1,value2) 如果value1不为空,返回value1,否则返回value2
select ifnull(null,'hello');

-- case when [val1] then [res1]...else [default] ebd函数
-- 如果val1为true,返回res1,... 否则返回default默认值
select case when 2+3>6 then '正确' else '错误' end;

-- CASE [expr] WHEN [val1] THEN [res1] ... ELSE [ default ] END函数
-- 如果expr的值等于val1,返回res1,... 否则返回default默认值
select case 2 WHEN  3 then '对' else '错' end;

流程函数需要结合具体案例来分析使用

接下来,进行一下案例的分析

现在有一张员工表

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

sql语句怎么书写

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

例子2

有这样一个分数表

>=85优秀,>=60及格,<60不及格

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

总结


网站公告

今日签到

点亮在社区的每一天
去签到