题解 | 82:返回2020年1月的所有订单号和订单日期
返回 2020 年 1 月的所有订单的订单号和订单日期
https://www.nowcoder.com/practice/c7734db33854477aa94ae238a3390435
select order_num, order_date from Orders where year(order_date) = '2020' and month(order_date) = '1' order by order_date ASC
通过这一道题,总结一下匹配类型题目的解法以及字符串操作的相关函数:
字符串操作的函数:
- 文本切割:substring_index(字段,'分割方式',n)。n代表第几段
- 文本截取:substring(字段,起始点,终点)
- 文本替换:replace(字段,‘被替换的部分’,'替换后的结果')
- 文本删除:trim('被删除字段' from 列名)
- 文本拼接:concat(字符串1,字符串2,字符串3,......)
- 文本大写:upper(字符串)
- 文本小写:lower(字符串)
- 关键字匹配: 类似的->like "%关键字%";不类似的-> not like "%关键字%"
字符串匹配(近似查找法)
用like来查找
select order_num, order_date from Orders where order_date like '2020-01%' order by order_date
切割字符串
select order_num, order_date from Orders where left(order_date, 7) = '2020-01' order by order_date
字符串比较
select * from Orders where order_date >= '2020-01-01 00:00:00'and order_date <= '2020-01-31 23:59:59' order by order_date;
用正则来查找(效率不如like,能用like就用like)
select order_num, order_date from Orders where order_date regexp '2020-01' order by order_date
时间函数匹配
select order_num, order_date from Orders where year(order_date) = '2020'and month(order_date) = '1' order by order_date
利用date_format函数 (参考其中的匹配规则进行匹配)
select order_num, order_date from Orders where date_format(order_date, '%Y-%m')='2020-01' order by order_date