从数据库中获取子字符串

问题描述 投票:0回答:2

我有一个表,该表的列包含如下所示的字符串。

[email protected]

[email protected]

[email protected]

我需要从@到。(点)获取子字符串。我已经写了一些sql,但是它有固定的长度,我需要动态查询来获取子字符串。

从注册中选择*,例如“%@%”之类的电子邮件;

子字符串查询从注册中选择电子邮件,substr(email,4,10);

请给我一个查询。

mysql sql
2个回答
1
投票

这应该做:

SELECT REVERSE(SUBSTRING(REVERSE(SUBSTRING_INDEX(email, '@', -1)), LOCATE('.', REVERSE(email))+1));

这将包括@和最后一个点之间的所有点(例如,“ [email protected]”将导致“ a.long.domain.name”),而不是嵌套的SUBSTRING_INDEX,后者只会返回@和第一个点之间是什么(例如“ a”)。


0
投票

substring_index()是最好的方法:

select substring_index(substring_index(email, '@', -1), '.', 1)
© www.soinside.com 2019 - 2024. All rights reserved.