Redshift中的英国邮政编码区

Posted

技术标签:

【中文标题】Redshift中的英国邮政编码区【英文标题】:UK Postcode area in Redshift 【发布时间】:2016-08-16 08:38:20 【问题描述】:

我正在尝试使用 SQL (Redshift) 提取英国邮政编码的第一部分 例如,BT28 8YT 应该返回 BT - 所以基本上是前一个或两个字母字符,但它不应该返回数字。我发现 UK Govt 正则表达式有点难以使用!

这是我目前所拥有的,但我正在努力解决我应该使用什么正则表达式函数,所以 redshift 会引发语法错误。

[Amazon]() Invalid operation: syntax error at or near "REGEXP";

SELECT 
    IF((left(orders.customer_postcode,2) REGEXP '[0-9]') = 0, left(orders.customer_postcode,2), left(orders.customer_postcode,1)) AS "orders.postcode_area"
FROM orders 

【问题讨论】:

【参考方案1】:

邮政编码区域总是一两个字母后跟一个数字。

看起来您可以使用 REGEXP_SUBSTR 来执行此操作:

http://docs.aws.amazon.com/redshift/latest/dg/REGEXP_SUBSTR.html

select regexp_substr(customer_postcode,'^[a-zA-Z]1,2') from orders

【讨论】:

【参考方案2】:

您也可以使用SIMILAR TO 来执行此操作。例如,您可以使用 WC 邮政编码: postcode similar to 'WC[1-2][A-Z][[:space:]][A-Z0-9]3'

【讨论】:

以上是关于Redshift中的英国邮政编码区的主要内容,如果未能解决你的问题,请参考以下文章

RedShift 临时表中的编码

Redshift中DISTSTYLE与压缩编码的关系

AWS Redshift 批量插入 + 编码定义

Redshift 性能:连接列上的编码

Redshift 副本从分析创建不同的压缩编码

Redshift 查询数组<varchar(128)> 返回编码值