gpt4 book ai didi

postgresql - Postgres - 选择没有表格但来自函数的数据的行号

转载 作者:行者123 更新时间:2023-11-29 12:19:04 24 4
gpt4 key购买 nike

我试图得到这样的结果:

rownumber | value
1 | a
2 | b
3 | c

没有任何表格我正在做这样的事情:

WITH RECURSIVE t(rownumber, value) AS (
select 1, regexp_split_to_table('a, b, c', ',')
UNION ALL
SELECT rownumber+1, regexp_split_to_table('a, b, c',',') FROM t
)
SELECT * FROM t limit (select count(*) from regexp_split_to_table('a, b, c', ','));

但结果并不如预期。

我这样做的原因是因为值 'a, b, c' 应该是某个变量。

在 Oracle 中,SQL 看起来像这样:

SELECT value  FROM (
SELECT ROWNUM AS rownumber, trim(REGEXP_SUBSTR('a, b, c','[^,]+', 1, LEVEL)) AS value
FROM DUAL CONNECT BY trim(REGEXP_SUBSTR('a, b, c', '[^,]+', 1, LEVEL)) IS NOT NULL
)

并且有效。

我在 Postgresql 中做错了什么?

最佳答案

发生这种情况是因为 regexp_split_to_table 返回一个表而不是每个行号的单个值。

也许不同的方法会奏效?例如,这给了我你想要的输出:

SELECT  regexp_split_to_table('a,b,c', ',')   as value, 
rank() over(order by regexp_split_to_table('a,b,c', ',')) as rownumber

编辑:以上将重新排序可能不是您想要的结果。以下将保留顺序:

WITH T as
(
SELECT regexp_split_to_table('d,a,b,c', ',') as value
)

SELECT row_number() over() as rownumber,
value

FROM t

关于postgresql - Postgres - 选择没有表格但来自函数的数据的行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36948894/

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