mysql - SQL获取字段中间的字符

标签 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 个字符,但我不知道如何使该动态到电子邮件后缀的末尾。

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

最佳答案

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

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

关于mysql - SQL获取字段中间的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50241118/

相关文章:

c - 将字符串中的字符替换为 C 中的字符串

javascript - 如何在不拆分单词的情况下设置 100 个字符限制?

mysql - 如何找到两个数字之间的绝对差MYSQL

mysql - 如何对所有标题进行求和,即使其他标题为空

php - Laravel 多个 where 条件在 whereHas 回调

来自具有可变内容的字符串的 JavaScript 子字符串

带有左连接的 MySQL SELECT 对连接表中的值返回 null

c# - MVC5/C# : Pass LINQ inner Join query to view model

windows - 批处理文件 : Is it possible to extract a substring where the index is a variable?

c++ - 相同分隔符之间有多个子字符串