2017-12-27 204 views
0

有人知道如何在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://stackoverflow.com/questions/18961996/how-to-split-a-string-value-based-on-a-delimiter- in-db2 – mao

回答

1

所以我一直都面臨着這樣的問題,我爲它找到一個解決方案:

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