我需要一个 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。
有人可以帮我解决我哪里出错了吗?
最佳答案
您似乎想要解析分隔列表中的倒数第二项。你需要先得到它,然后再分割它。这是三个 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
关于mysql - SQL 中重复字符串时的子字符串索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54095718/