在做SAP MES业务的时候,遇到了如下问题:
HANA数据库如何截取传进来的字符串?比如,对于“C515,GT-ShiWanGerWeiShenMer,A”,第一个逗号前的字符串"C515"是站点,“GT-ShiWanGerWeiShenMer”是流水号,"A"是版本号,现在数据库需要保存该字符串的流水号,怎么截取呢?
先来看一个例子:
SELECT SUBSTRING_REGEXPR('[^|]+' IN '1111|2222|3333|44|555' FROM 1 OCCURRENCE 4) from dummy;
这一段SQL语句就是HANA截取字符串的方法,使用了正则表达式。解释下,这个正则表达式的含义就是 用数组[ ]获取,以字符串中的|字符作为截取标准截取1111|2222|3333|44|555“”,从第1个开始的第4个,就是我们要截取的字符串,结果为“44”。(注意from后面的数据库表)
对于上面的问题,截取“C515,GT-ShiWanGerWeiShenMer,A”中的流水号,SQL语句就是:
SELECT SUBSTRING_REGEXPR('[^,]+' IN 'C515,GT-ShiWanGerWeiShenMer,A' FROM 1 OCCURRENCE 2) from dummy;
以逗号","作为截取标准,获取第2个字段,结果为"GT-ShiWanGerWeiShenMer",就是我们需要的流水号。(注意from后面的数据库表)