How do you split a string value in DB2?
For example, given the value:
CHG-FFH.
I want to split on the dash (-), which would resul
I know this is old post.. but thought following may help others.
I used following approach to split the given string.
SELECT TRIM(ITEM) AS ITEM FROM TABLE(.SF_SPLIT(I_INPUTLIST=>'AA|BB|CC|DD|EE|EE|FF', I_DELIMITER=>'|')) AS T;
SF_SPLIT is the User defined SQL function and below is definition:
CREATE OR REPLACE FUNCTION .SF_SPLIT(
I_INPUTLIST VARCHAR(8000)
, I_DELIMITER VARCHAR(3)
)
RETURNS TABLE (ITEM VARCHAR(8000))
LANGUAGE SQL
RETURN
WITH R1 (ITEM, REMINDER) AS
(SELECT SUBSTR(I_INPUTLIST, 1, LOCATE(I_DELIMITER, I_INPUTLIST)-1) AS ITEM,
SUBSTR(I_INPUTLIST, LOCATE(I_DELIMITER, I_INPUTLIST)+1, LENGTH(I_INPUTLIST)) REMINDER
FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT SUBSTR(REMINDER, 1, LOCATE(I_DELIMITER, REMINDER)-1) AS ITEM,
SUBSTR(REMINDER, LOCATE(I_DELIMITER, REMINDER)+1, LENGTH(REMINDER)) REMINDER
FROM R1 WHERE LOCATE(I_DELIMITER, REMINDER) > 0
UNION ALL
SELECT SUBSTR(REMINDER, LOCATE(I_DELIMITER, REMINDER)+1, LENGTH(REMINDER)) AS ITEM,
'' AS REMINDER FROM R1 WHERE REMINDER <> '' AND LOCATE(I_DELIMITER, REMINDER) = 0
)
SELECT ITEM FROM R1;