在我的表中,我有一个实际上是一个数组的字段,其中所有条目的结构都是{“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个字符,但我不知道在电子邮件后缀的末尾是否有动态。
如何在字段中隔离电子邮件地址?
答案 0 :(得分:0)
通过使用后续键的位置来定义我的端点(加上一点调整)得到它:
select substring(`fieldname`, locate("key1", `fieldname`) + 9,
locate("key2", `fieldname`) - locate("key1", `fieldname`) - 12)
as 'Customer Email'`
from table