我需要一个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给出来源。
有人可以帮助我解决我的问题吗?
答案 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