【发布时间】:2013-06-01 15:34:15
【问题描述】:
- 我使用 amazon redshift 作为我的数据仓库
- 我有一个字符串类型的字段 (field1)。有些字符串以四个数字开头,有些则以字母开头:
'测试 alpha'
'1382 测试版'
- 我想过滤掉字符串不以四个数字开头的行
- 查看 redshift 文档,我不认为 isnumber 或 isnumeric 是函数。似乎“喜欢”功能是最好的可能性。
-
我试过了
where left(field1, 4) like '[0-9][0-9][0-9][0-9]'
这不起作用,从下面的链接看来,redshift 可能不支持:
https://forums.aws.amazon.com/message.jspa?messageID=439850
'where' 子句中是否有错误?如果不是,并且 redshift 不支持该子句,有没有办法过滤?我正在考虑使用演员表
cast(left(field1,4) as integer)
然后如果它产生错误则传递该行,但不确定如何在亚马逊红移中执行此操作。或者是否有其他用于非数字过滤器的代理。
谢谢
【问题讨论】:
-
您的示例不适用于 PostgreSQL。 ILIKE 不支持正则表达式。 Amazon Redshift 基于 PostgreSQL 8.0.2,所以也许您可以使用 SIMILAR 运算符 postgresql.org/docs/8.0/interactive/… REGEXP 因为 SIMILAR 是关键字,也许......有些像 SELECT substring('1234 xxx' FROM 1 FOR 4) 类似于 '[\d] {4}';
标签: amazon-redshift