SUBSTRING()函数是文本处理函数,可以截取字符串
如果SUBSTRING()函数接收2个参数,则第一个参数为待截取的字符串,第二个参数为截取的起始位置。如果第二个参数为负整数,则为倒数的起始位置。
以字符串“abc123”为例
操作示例 | 示例结果 |
SELECT SUBSTRING('abc123',2) | bc123 |
SELECT SUBSTRING('abc123',-3) | 123 |
如果SUBSTRING()函数接收3个参数,则第一个参数为待截取的字符串,第二个参数为截取的起始位置,第三个参数为截取的长度。如果第二个参数为负整数,则为倒数的起始位置。
以字符串“abc123”为例
操作示例 | 示例结果 |
SELECT SUBSTRING('abc123',2,3) | bc1 |
SELECT SUBSTRING('abc123',-3,2) | 12 |
习题案例
现有一张订单表,order_time字段是精确到秒的字符串格式的时间,需查询并获取每个订单的”年“、”月“、”日“,即衍生出3个新字段
注意:表中的时间是字符串格式的,因此可以使用SUBSTRING()函数提取年、月、日
原始表
查询得到的结果 :
代码 :
-- 建表语句
DROP TABLE IF EXISTS order_detail;
CREATE TABLE order_detail(
order_id VARCHAR(8),
order_time VARCHAR(32)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
INSERT INTO
order_detail (order_id,order_time)
VALUE ('o001','2020-06-15 09:12:33')
,('o002','2020-06-15 13:24:09')
,('o003','2020-06-16 10:44:24')
,('o004','2020-06-17 08:05:52')
,('o005','2020-06-18 18:03:43');
-- 查询语句
SELECT * ,
SUBSTRING(order_time,1,4) AS order_year,
SUBSTRING(order_time,6,2) AS order_month,
SUBSTRING(order_time,9,2) AS order_day
FROM order_detail;