文章目录
- 数值函数
- 字符串函数
- 日期函数
-
- now() / curdate() / curtime():返回当前的日期和时间 / 返回当前日期 / 返回当前时间
- year(now()) / month() / day() / hour() / minute() / second() 提取特定日期或时间
- dayname(now()) / monthname():返回字符串类型的星期和月份
- extract(day from now()):返回指定的时间或日期
- 练习1
- date_format():日期格式函数
- time_format():时间格式函数
- date_add():给日期时间值增加日期,写负值也能减
- date_sub():给日期时间值减去日期,写负值也能加
- datediff():返回两个日期的天数间隔
- time_to_sec():返回从零点计算的秒数
- 其他函数
数值函数
round():四舍五入
- 参数1
select round(5.37)
- 参数2,可指定四舍五入的精度
select round(5.37,1)
运行结果
ceiling():上限函数
select ceiling(5.1)
运行结果
floor():地板函数
select floor(5.8);
运行结果
abs():计算绝对值
select abs(-3.5);
运行结果
rand():生成0-1的随机浮点数
select rand()
运行结果
字符串函数
length():获取字符串中的字符数
select length('xuwuuuu')
运行结果
upper() / lower():将字符串转化成大小写
select upper('xuwuuuu');
运行结果
select lower('XUWUUUU')
运行结果
trim/ltrim/rtrim:删除字符串中不需要的空格
select ltrim(' xuwuuu')
select rtrim('xuwuuu ');
select trim(' xuwuuu ')
left /right /substr:返回字符串相应位置字符
select left('xuwuuuuu',3)
select substr('xuwuuuuu',3,2);
locate:返回第一个字符或一串字符匹配位置
select locate('u', 'xuwuuuu')
select locate('y', 'xuwuuuu')
select locate('uuuu', 'xuwuuuu')
replace:替换字符或字符串
select replace('xuwuuuuu', 'xu', 'st')
select replace('xuwuuuuu', 'xu', 's')
select replace('xuwuuuuu', 'x', 'st')
concat:串联两个字符串
select concat('xu', 'wuuuu')
- 练习:把表中的名和姓串联起来
use sql_store;
select concat(first_name, ' ', last_name) as full_name
from customers
日期函数
now() / curdate() / curtime():返回当前的日期和时间 / 返回当前日期 / 返回当前时间
select now(), curdate(), curtime();
year(now()) / month() / day() / hour() / minute() / second() 提取特定日期或时间
- 返回整数值
select year(now()), month(now()), day(now()),
minute(now()), second(now())
dayname(now()) / monthname():返回字符串类型的星期和月份
- 返回字符串
select dayname(now()), monthname(now())
extract(day from now()):返回指定的时间或日期
- 要定制单位,如年、月、日期、秒等
select extract(day from now()),
extract(year from now()),
extract(month from now())
练习1
use sql_store;
select *
from orders
where year(order_date) = year(now())
date_format():日期格式函数
select date_format(now(), '%M %d %Y')
time_format():时间格式函数
select time_format(curtime(), '%H:%i %p')
date_add():给日期时间值增加日期,写负值也能减
select date_add(now(), interval 1 day),
date_add(now(), interval -3 year)
返回了明天的同一时间(写码当前是2023-11-29),返回3年后的同一时间
date_sub():给日期时间值减去日期,写负值也能加
select date_sub(now(), interval 4 day),
date_sub(now(), interval -3 year)
datediff():返回两个日期的天数间隔
select datediff('2023-11-29 22:02', '2022-11-29 21:02'),
datediff('2022-11-29 22:02', '2023-11-29 21:02')
time_to_sec():返回从零点计算的秒数
- 返回从零点计算的秒数
select time_to_sec('00:30'),
time_to_sec(curtime())
select time_to_sec('22:10') - time_to_sec('22:00')
其他函数
ifnull()
use sql_store;
select order_id,
ifnull(shipper_id, 'Not assigned') as shipper
from orders
coalesce()
use sql_store;
select order_id,
coalesce(shipper_id, comments, 'Not assigned') as shipper
from orders
练习1
select concat(first_name, ' ', last_name) as customer,
ifnull(phone, 'Unknown')
from customers
if():单一表达式
select order_id,
order_date,
if(year(order_date) = '2019', 'Active', 'Archived') as category
from orders
练习2
select product_id,
name,
count(*) as orders,
if(count(*) > 1, 'Many times', 'Once') as frequency
from products
join order_items using (product_id)
group by product_id
case运算符:多个表达式
select order_id,
order_date,
case
when year(order_date) = '2019' then 'Active'
when year(order_date) = '2018' then 'Last Year'
when year(order_date) < '2018' then 'Archived'
else 'Future'
end as category
from orders;
练习3
select concat(first_name, ' ', last_name) as customer,
points,
case
when points > '3000' then 'Gold'
when points between '2000' and '3000' then 'Sliver'
when points < '2000' then 'Bronze'
end as category
from customers
order by points desc
select concat(first_name, ' ', last_name) as customer,
points,
case
when points > '3000' then 'Gold'
when points >= '2000' then 'Silver'
else 'Bronze'
end as category
from customers
order by points desc;
原文地址:https://blog.csdn.net/xuwuuu/article/details/134687015
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_#ID#.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。