SQL用于在字段中间获取字符

时间:2018-05-08 19:37:10

标签: mysql substring

在我的表中,我有一个实际上是一个数组的字段,其中所有条目的结构都是{“key1”:value1,“key2”:value2 ...}

我需要根据其中一个键“电子邮件”进行一些分析,但由于长度是可变的,因此无法弄清楚如何在查询中返回电子邮件地址。子串的开头可预测地在“email”(引用包括)之后,并且结尾可预测地为“.com”(引用不包括在内)。

现在我的查询如下:

select substring(`fieldname`, locate('"email"', `fieldname`) + 9, 20) 
as 'Customer Email' 
from table 
where `fieldname` in ('email_processed', 'email_delivered')

所以我在地址开头之后得到了20个字符,但我不知道在电子邮件后缀的末尾是否有动态。

如何在字段中隔离电子邮件地址?

1 个答案:

答案 0 :(得分:0)

通过使用后续键的位置来定义我的端点(加上一点调整)得到它:

select substring(`fieldname`, locate("key1", `fieldname`) + 9, 
locate("key2", `fieldname`) - locate("key1", `fieldname`) - 12) 
as 'Customer Email'` 
from table