如何检查Redshift(postgres)regexp_substr输出的长度?

How to check length of Redshift (postgres) regexp_substr output?

提问人:user2193193 提问时间:11/9/2023 更新时间:11/9/2023 访问量:33

问:

SELECT
    data
    ,regexp_substr(data,'bottle~([[:alnum:]]{32})', 1, 1, 'ep') as bval
    ,len(bval) as WhyIsntThisAlways32or0
FROM activity
WHERE TRUE
;

数据记录如下所示:bottle~6c3f28d9f93e9000119cd9063d07d115~984983

此查询正确返回为bval6c3f28d9f93e9000119cd9063d07d115

但是,从不显示为实际长度。它总是零或一。WhyIsntThisAlways32or0

为什么我不能,我该如何解决,检查通过正则表达式拉出的子字符串的长度?

相关:这是一个非常简化和编辑的查询。我相信需要regexp_substr,因为做其他基于子字符串和位置的拆分会变得非常快。

正则表达式 PostgreSQL Amazon-Redshift

评论

0赞 PM 77-1 11/9/2023
这回答了你的问题吗?在同一 SELECT 子句中使用列别名
0赞 Marth 11/9/2023
中是否有列?Redshift 将优先考虑实际列而不是别名(请参阅文档(编辑:看起来链接到特定文本部分不起作用,但信息在部分的注释中))。bvalactivityAS column_alias

答: 暂无答案