项目场景:
在将数据落地到数据库后,应业务需求,需要截取特定数据用作另一字段值;如:现有字段areaName值为:海南省东方市…,现想将areaName省份信息截取存到province
问题描述
网上搜罗一圈,发现MySQL提供的截取函数要么需要明确截取长度,要么subString_index()截取不包含指定字符串,如substring_index(‘海南省东方市’, ‘省’, 1)截取结果为:海南
解决方案:
结合INSTR(),left()函数截取即可。
left(str, length):字符串截取
select left('baidu.com', 3) 截取结果为bai
instr:返回子串第一次出现的索引,如果没有则返回0
SELECT INSTR('LOL','L') # 输出 1 (mysql是从1开始算位数)
最终SQL如下:
select LEFT('海南省东方市', INSTR('海南省东方市', '省')) as province;