我需要根據列的長度和 2 的增量在 Oracle 中生成序列。
For example:
Select comp_name from table_a
Output: COGNIZANT
所以我需要生成序列:
Generate_sequence ( min number , length (comp_name), incremental)
含義:序列 min val 1 ,最大值 9 和增量 2 即 (1, 9,2)
這里是 9,因為我們的輸出是已知的,它的長度是 9
生成的序列的輸出應該是
1
3
5
7
9
uj5u.com熱心網友回復:
您可以創建用戶定義的函式:
CREATE FUNCTION generate_series(
i_start IN NUMBER,
i_end IN NUMBER,
i_step IN NUMBER DEFAULT 1
) RETURN SYS.ODCINUMBERLIST PIPELINED DETERMINISTIC
IS
v_steps CONSTANT PLS_INTEGER := FLOOR((i_end - i_start)/i_step);
BEGIN
FOR step_num IN 0 .. v_steps LOOP
PIPE ROW (i_start i_step * step_num);
END LOOP;
END;
/
然后在表集合運算式中使用它:
SELECT *
FROM TABLE(generate_series(1,3,0.7));
哪個輸出:
COLUMN_VALUE 1 1.7 2.4
如果你有桌子:
CREATE TABLE table_a (comp_name) AS
SELECT 'COGNIZANT' FROM DUAL UNION ALL
SELECT 'ABCD' FROM DUAL;
然后:
SELECT comp_name,
s.column_value
FROM table_a
CROSS JOIN TABLE(generate_series(1, LENGTH(comp_name), 2)) s
輸出:
COMP_NAME COLUMN_VALUE 認識的 1 認識的 3 認識的 5 認識的 7 認識的 9 A B C D 1 A B C D 3
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/415957.html
標籤:
