SQL中重复字符串的情况下的子字符串索引

时间:2019-01-08 16:18:03

标签: mysql sql indexing substring

我需要一个SQL查询来获取两个已知字符串之间的值,该字符串重复多次或两次。 一个例子。

base- 2019|ACX9|PTG-C|PPP1-MMM1|7986847

期望的结果是Source中的PPP1和store_loc中的MMM1。

到目前为止,我已经提出了

select
base,
substring_index(substring_index (base,'-',1),'|',-1) as source, 
substring_index(substring_index (base,'-',-1),'|',1) as store_loc

from order_tracking

在像这样的基础上工作正常

2019|ACX9|PTGA|PPP1-MMM1|7986847

但不能与像

这样的基础一起使用
2019|ACX9|PTG-C|PPP1-MMM1|7986847

此处将其作为PTG给出来源。

有人可以帮助我解决我的问题吗?

1 个答案:

答案 0 :(得分:0)

您似乎想解析定界列表中倒数第二个项目。您需要先获取它,然后将其拆分。那是三个substring_index()

select substring_index(substring_index(substring_index(base, '|', -2), '|', 1), '-', 1), as source,
       substring_index(substring_index(substring_index(base, '|', -2), '|', 1), '-', -1) as store_loc    
from (select '2019|ACX9|PTG-C|PPP1-MMM1|7986847' as base) x