如何在 Amazon Redshift 中获取电子邮件地址的第二部分或第一部分?

Posted

技术标签:

【中文标题】如何在 Amazon Redshift 中获取电子邮件地址的第二部分或第一部分?【英文标题】:How to get second or first part of email address in Amazon Redshift? 【发布时间】:2019-09-27 15:11:02 【问题描述】:

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

    如何选择它的第一部分('@'之前)? 如何选择它的第二部分(在“@”之后)?

    下面的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')

【问题讨论】:

【参考方案1】:

对于 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

【讨论】:

红移 postgres。但在这种情况下,解决方案有效。您应该参考 docs.aws.amazon.com/redshift/latest/dg/SPLIT_PART.html 而不是 postgres 文档。 谢谢你们!如果我像你一样直接给出列名而不是字符串('abd@def.com'),这是否有效?所以我用 email_add 替换它(email_add 是包含电子邮件地址的列的名称)? 是的。使用字符串文字更容易演示。

以上是关于如何在 Amazon Redshift 中获取电子邮件地址的第二部分或第一部分?的主要内容,如果未能解决你的问题,请参考以下文章

Amazon Redshift - 按类别获取每周销售量

Amazon Redshift 从 JSON 获取所有密钥

Amazon redshift 在字符串正则表达式后获取数字

Amazon Redshift 使用 COPY 命令仅从 JSON 中获取 1 行

如何在 Amazon Redshift 中使用 Hibernate 插入实体

如何从我的 Amazon EC2 实例中连接到 Amazon Redshift 集群