[英]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.