如何解析字符串内容

字符串进行解析,主要使用两个字符串函数:substr()函数和find()函数

substr()函数

SUBSTR(字符串, 开始位置, [长度]) 从开始位置(字符串从1开始计数)截取指定长度的字符串返回,长度为可选参数,不给则默认截取到字符串尾部。
示例: SUBSTR("abc123", 1, 3) = "abc", SUBSTR("abc123", 1) = "abc123"

find()函数

FIND(字符串, 子串, [起始位置]) 返回子字符串在字符串中的位置,如果未找到子字符串,则返回0。起始位置为可选参数,如果给定此参数则从此位置开始查找,字符串中的第一个字符串为位置1
示例: FIND("Calculation", "alcu") = 2

如果字符串各个部分字符的长度一致,可以直接使用substr函数解析

场景一:对于记录日期的字符串,格式为yyyymmdd,可以按规律通过substr截取日期的各个部分

年:substr("yyyymmdd",1,4)="yyyy"  
月:substr("yyyymmdd",5,2)="mm"  
日:substr("yyyymmdd",7,2)="dd"

如果截取的字符串部分内容长度不确定,则需要使用substr和find函数组合解析

场景二:需要通过以下的[字符串]字段获取员工的姓名以及业绩分数

[字符串]  
本月小明业绩100分  
本月小芳业绩100分  
本月王铁蛋业绩99分 

步骤一:使用find函数获取所需内容的开始位置
姓名开始位置固定,分数开始位置不固定,需要通过find函数获取分数的开始位置

姓名定位:3
分数定位:find([字符串],"业绩")+2

步骤二:使用find函数获取所需内容的长度 因为员工的姓名以及分数长度都是不确定的,需要通过find函数获取它们的长度

姓名长度:find([字符串],"业绩")-3
分数长度:find([字符串],"分")-find([字符串],"业绩")-2

步骤三:使用substr函数解析字符串

姓名:SUBSTR([字符串],[姓名定位],[姓名长度])
分数:substr([字符串],[分数定位],[分数长度])

结果: