【问题标题】:[Amazon](500310) Invalid operation: function split_part(...) does not exist[Amazon](500310) 无效操作:函数 split_part(...) 不存在
【发布时间】:2017-08-16 19:42:21
【问题描述】:

我正在尝试在 redshift 中运行以下查询

select row_number() over(order by 1) as assignment_tag_id   , 
   user_id as user_id   , 
   split_part(t.assignment, ',', numbers.num) as assignment 
from cardlytics_test t 
join numbers on numbers.num <= regexp_count(t.assignment, ',\\s') + 1 

但它会抛出错误

亚马逊无效操作:函数split_part(字符变化,字符变化,双精度)不存在;

查询有什么问题?

【问题讨论】:

  • 将 numbers.num 转换为 int:numbers.num::int.

标签: amazon-redshift


【解决方案1】:
select row_number() over(order by 1) as assignment_tag_id   , 
   user_id as user_id   , 
   split_part(t.assignment, ',',cast (numbers.num as int)) as assignment 
from cardlytics_test t 
join numbers on numbers.num <= regexp_count(t.assignment, ',\\s') + 1 

split_part(string,delimiter,part) 中的第三个参数必须是整数,并且从错误代码中我推测您正在传递浮点数。

部分- 要返回的部分的位置(从 1 开始计数)。必须是大于 0 的整数。如果部分大于字符串部分的数量,则 SPLIT_PART 将返回一个空字符串。

如果我做出了错误的假设,请发表评论,我会重新调整答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    相关资源
    最近更新 更多