Split a VARCHAR in DB2 to retrieve a value inside

后端 未结 5 613
我在风中等你
我在风中等你 2020-12-10 06:40

I have a VARCHAR column that contains 5 informations (2 CHAR(3) and 3 TIMESTAMP) separated with \'$\'.

C         


        
5条回答
  •  谎友^
    谎友^ (楼主)
    2020-12-10 06:58

    CREATE FUNCTION split(pos INT, delimeter CHAR, string VARCHAR(255))
    LANGUAGE SQL
    RETURNS VARCHAR(255)
    DETERMINISTIC NO EXTERNAL ACTION
    BEGIN ATOMIC
        DECLARE x INT;
        DECLARE s INT;
        DECLARE e INT;
    
        SET x = 0;
        SET s = 0;
        SET e = 0;
    
        WHILE (x < pos) DO
            SET s = locate(delimeter, string, s + 1);
            IF s = 0 THEN
                RETURN NULL;
            END IF;
            SET x = x + 1;
        END WHILE;
    
        SET e = locate(delimeter, string, s + 1);
        IF s >= e THEN
            SET e = LENGTH(string) + 1;
        END IF;
        RETURN SUBSTR(string, s + 1, e - s -1);
    END!
    

    Usage:

    SELECT split(3,'$',col) from mytable; -- or
    SELECT split(0,'-', 'first-second-third') from sysibm.sysdummy1;
    SELECT split(0,'-', 'returns this') from sysibm.sysdummy1;
    SELECT split(1,'-', 'returns null') from sysibm.sysdummy1;
    

提交回复
热议问题