【问题标题】:Substring index in case of repeated strings in SQLSQL中重复字符串的子字符串索引
【发布时间】:2019-06-03 09:02:50
【问题描述】:

我需要一个 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

与 base like 配合使用效果很好

2019|ACX9|PTGA|PPP1-MMM1|7986847

但不适用于 base like

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

这里给出的来源是 PTG。

有人可以帮我解决我哪里出错了吗?

【问题讨论】:

  • 您应该将该字符串的各个元素存储为单独的列。那么查询就简单了。

标签: mysql sql indexing substring


【解决方案1】:

您似乎想要解析分隔列表中的倒数第二个项目。你需要先得到它,然后再拆分它。也就是三个substring_index()s:

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

【讨论】:

    猜你喜欢
    • 2013-07-15
    • 2011-10-22
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 2022-08-19
    • 2010-12-15
    • 2016-04-13
    • 2022-09-27
    相关资源
    最近更新 更多