mysql - SQL 中重复字符串时的子字符串索引

标签 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。

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

最佳答案

您似乎想要解析分隔列表中的倒数第二项。你需要先得到它,然后再分割它。这是三个 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/

相关文章:

mySQL 在 SELECT 查询中将整数转换为文本

mysql - 如何在Mysql二进制中制作 "In"运算符?

mysql - 用于查找所管理员工数量多于其他主管的员工姓名的 SQL 查询是什么?

php - 查询不返回所有数据

mysql - 删除主键也删除外键

mysql - 有序随机性

indexing - 谷歌企鹅恢复时间?

java - 在 Lucene 中索引多个用户的数据的最佳实践是什么

mysql - 该表及其查询的最佳优化是什么?

mysql - Count(*) 允许按 null 分组