我有一个包含列的表,其中包含如下字符串。
sourabh@winworldsoft.com
monica@winworldsoft.com
sachin@winworldsoft.com
我需要从@到。(点)获取子串 我写了一些sql,但它有固定的长度,我需要动态查询来获取子字符串。
从注册中选择*,其中包含'%@%';
等电子邮件子字符串查询 从注册中选择电子邮件,substr(电子邮件,4,10);
请为我写一个查询。
答案 0 :(得分:1)
这应该这样做:
SELECT REVERSE(SUBSTRING(REVERSE(SUBSTRING_INDEX(email, '@', -1)), LOCATE('.', REVERSE(email))+1));
这将包括@和最后一个点之间的所有点(例如" someone@a.long.domain.name.com"将导致" a.long.domain.name&#34 ;)而不是嵌套的SUBSTRING_INDEX,它只返回@和第一个点之间的什么(例如" a")。
答案 1 :(得分:0)
substring_index()
是最好的方法:
select substring_index(substring_index(email, '@', -1), '.', 1)
答案 2 :(得分:0)
尝试使用嵌套的SUBSTring_INDEX函数。 http://www.w3resource.com/mysql/string-functions/mysql-substring_index-function.php