今天在做表查询,查询内容如下:
plan_time
字段是yyyy-MM格式的varchar类型,但是我只想取到月份,不想显示年份,于是这就有了一个字符串截取的需求:我要通过MySQL的字符串截取函数,只取-
后面的内容。
方法如下
SELECT
a. CODE,
a.`year`,
substring_index(ad.plan_time, '-', - 1) AS plan_time,
ad.budget_value
FROM
tb_pu_area_budget a
LEFT JOIN tb_pu_area_budget_detail ad ON ad.main_code = a. CODE
WHERE
a. CODE = '11G2017'
ORDER BY
ad.plan_time
substring_index(ad.plan_time, '-', -1)
的意思是,截取ad.plan_time
字段中,倒数第一个-
之后的所有字符。
如果将其改为:substring_index(ad.plan_time, '-', 1)
那么意思就变成了:截取正数第一个-
之前的所有字符。
**除此之外,还有其他的字符串截取函数,如:`left()`, `right()`, `substring()`, 详情见:** [MySQL字符串函数substring:字符串截取](https://www.cnblogs.com/zdz8207/p/3765073.html)
值得一提的是,MySQL的substring()
是从1起始的,而不是类似于Java从0开始。
比如:
select substring('example.com', 4);
正确的结果应该为:mple.com,而不是ple.com