簡體   English   中英

將Oracle SQL轉換為PostgreSQL

[英]Conversion Oracle SQL to PostgreSQL

我在將腳本從Oracle轉換為Postgres時遇到問題:

WITH q AS (
    SELECT 'ABCDE' str
    FROM dual)
SELECT 'TEST' AS WL_ID
    ,substr(str, LEVEL, 1) AS SUPPLY_MODE_ID
FROM q connect BY LEVEL < length(q.str) + 1;

我在Postgres中嘗試過:

WITH RECURSIVE t(n) 
    AS (SELECT 'TEST', substring('ABCDE', 1, 1)
        UNION ALL
        SELECT 'TEST', substring('ABCDE', n+1,1)
        FROM t 
        where n<length('ABCDE')
)
SELECT * FROM t

我有錯誤:

錯誤:運算符不存在:文本+整數

我不知道如何返回與Oracle中完全相同的結果。

使用Postgres可以輕松得多:

select 'TEST' as wl_id, t.*
from unnest(string_to_array('ABCDE', null)) as t(supply_mode_id)

如果要確保確保以字符在字符串中的順序顯示行,則需要以下順序:

select 'TEST' as wl_id, t.supply_mode_id
from unnest(string_to_array('ABCDE', null)) with ordinality as t(supply_mode_id, idx)
order by t.idx;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM