首页 > 解决方案 > 如何在 Amazon Redshift 中获取电子邮件地址的第二部分或第一部分?

问题描述

我的表中有一个列保存电子邮件地址。

  1. 如何选择它的第一部分(在'@'之前)?
  2. 如何选择它的第二部分(在“@”之后)?
  3. 以下WHERE语句在 Redshift 中做了什么(email_add 是在表中保存电子邮件地址的列)?

    SELECT blablabla WHERE SUBSTRING(email_add,1,DECODE(POSITION('@' IN email_add),0,2,POSITION('@' IN email_add)-1)) IN ('arzt','zahnarzt','heilpraktiker','orthopaed','facharzt','praxis','gynaekol','klinik')

标签: sqlamazon-redshift

解决方案


对于 1 和 2,split_part(在分隔符上拆分字符串并返回给定字段(从 1 开始计数)。https://www.postgresql.org/docs/9.1/functions-string.html

SELECT split_part('abc@def.com', '@', 1); -- abc
SELECT split_part('abc@def.com', '@', 2); -- def.com

推荐阅读