How to split comma separated string inside stored procedure?

后端 未结 6 1533
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-16 23:41

How to split comma separated string into strings inside store procedure and insert them into a table field?

Using Firebird 2.5

6条回答
  •  自闭症患者
    2020-12-16 23:52

    This works for me on an Informix DataBase:

    DROP FUNCTION rrhh:fnc_StringList_To_Table;
    CREATE FUNCTION rrhh:fnc_StringList_To_Table (pStringList varchar(250))
        RETURNING INT as NUMERO;
    
        /* A esta Funcion le podes pasar una cadena CSV con una lista de numeros
         *      Ejem:  EXECUTE FUNCTION fnc_StringList_To_Table('1,2,3,4');
         * y te devolvera una Tabla con dichos numeros separados uno x fila
         * Autor:  Jhollman Chacon @Cutcsa - 2019 */
    
        DEFINE _STRING VARCHAR(255);
        DEFINE _LEN INT;
        DEFINE _POS INT;
        DEFINE _START INT;
        DEFINE _CHAR VARCHAR(1);
        DEFINE _VAL INT;
    
        LET _STRING = REPLACE(pStringList, ' ', '');
        LET _START = 0;
        LET _POS = 0;
        LET _LEN = LENGTH(_STRING);
    
        FOR _POS = _START TO _LEN
            LET _CHAR = SUBSTRING(pStringList FROM _POS FOR 1);
    
            IF _CHAR <> ',' THEN 
                LET _VAL = _CHAR::INT;
            ELSE 
                LET _VAL = NULL;
            END IF;
    
            IF _VAL IS NOT NULL THEN 
                RETURN _VAL WITH RESUME;
            END IF;
    
        END FOR;
    
    END FUNCTION;
    
    EXECUTE FUNCTION fnc_StringList_To_Table('1,2,3,4');
    SELECT * FROM TABLE (fnc_StringList_To_Table('1,2,3,4'));
    

提交回复
热议问题