gpt4 book ai didi

sql - 使用 string_to_array() 将 Oracle 转换为 PostgreSQL 查询

转载 作者:行者123 更新时间:2023-11-29 11:38:25 31 4
gpt4 key购买 nike

我在 Oracle 中有以下查询:

SELECT to_number(a.v_VALUE), b.v_VALUE
FROM TABLE(inv_fn_splitondelimiter('12;5;25;10',';')) a
JOIN TABLE(inv_fn_splitondelimiter('10;20;;', ';')) b
ON a.v_idx = b.v_idx

给我这样的结果:

enter image description here

我想将查询转换为 Postgres。我试过这样的查询:

SELECT UNNEST(String_To_Array('10;20;',';'))

我也试过:

SELECT a,b
FROM (select UNNEST(String_To_Array('12;5;25;10;2',';'))) a
LEFT JOIN (select UNNEST(String_To_Array('12;5;25;10',';'))) b
ON a = b

但是没有得到正确的结果。
我不知道如何编写与 Oracle 版本完全等效的查询。有人吗?

最佳答案

从 Postgres 9.4 开始,您可以使用 unnest()使用多个数组并行解除嵌套:

SELECT *
FROM unnest('{12,5,25,10,2}'::int[]
, '{10,20}' ::int[]) AS t(col1, col2);

就是这样。 NULL 值会自动填充右侧缺失的元素。

如果参数以字符串的形式提供,则使用string_to_array() 进行转换第一的。喜欢:

SELECT *
FROM unnest(string_to_array('12;5;25;10', ';')
, string_to_array('10;20' , ';')) AS t(col1, col2);

更多细节和旧版本的替代解决方案:

关于sql - 使用 string_to_array() 将 Oracle 转换为 PostgreSQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28494357/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com