函数DB2表函数

问题描述:

有人知道如何在DB2中获得该结果:函数DB2表函数

查询

Example : 

    SELECT * FROM TABLE(FunctionName('1||2||3',||)) ; 

首先一个是具有值的参数和第二个是分隔符。

结果:我把对查询

Column 

    1 
    2 
    3 

值是根据参数和分隔符。

正如我上面所说的那样,行被管断开。我没有PL/SQL的庞大背景。

使用DB2 V11.1

+0

你的意思是'SELECT * FROM TABLE(使用functionName(“1 || 2 || 3','||'));' – mao

+0

可能的重复https://*.com/questions/18961996/how-to-split-a-string-value-based-on-a-delimiter- in-db2 – mao

所以我一直都面临着这样的问题,我为它找到一个解决方案:

CREATE OR REPLACE FUNCTION Test(
Data_1 CLOB(1M), Delimtator VARCHAR(12)) 
RETURNS TABLE (
FieldData varchar(2048)) 
LANGUAGE SQL 
BEGIN 
    DECLARE dInic INTEGER DEFAULT 1 ; 
    DECLARE dFim INTEGER DEFAULT 0 ; 
    DECLARE Rowid1 INTEGER DEFAULT 0; 
    DECLARE Campo VARCHAR(2048); 

    IF Data_1 IS NULL THEN 
     RETURN; 
    END IF; 

    SET dFim=LOCATE(Delimtator,Data_1); 

    WHILE dFim>0 DO 
    SET Campo=SUBSTRING(Data_1,dInic,dFim-dInic); 
     PIPE (Campo); 
     SET dInic=dFim+LENGTH(Delimtator); 
     SET dFim=LOCATE(Delimtator,Data_1,dFim+LENGTH(Delimtator)); 
    END WHILE; 

    SET Campo=SUBSTRING(Data_1, dInic,LENGTH(Data_1)-dInic+1); 
    PIPE (Campo); 
    RETURN; 
[email protected] 
+0

我喜欢你这样做。你能否评论这些代码? – danny117