Hi Steffen,
yes, that's possible:
DECLARE @input STRING;
DECLARE @delimiter_position INTEGER;
DECLARE @delimiter STRING;
DECLARE @i INTEGER;
DECLARE @cur CURSOR AS SELECT id, text FROM #input;
TRY DROP TABLE #input; CATCH ALL END TRY;
TRY DROP TABLE #output; CATCH ALL END TRY;
SET @delimiter = CHAR(13) + CHAR(10);
CREATE TABLE
#input
(
id AUTOINC
, text MEMO
);
CREATE TABLE
#output
(
id INTEGER
, counter INTEGER
, part CHAR(10)
);
INSERT INTO #input (text) VALUES ('AA' + CHAR(13) + CHAR(10) + 'CCC' + CHAR(13) + CHAR(10) + 'D');
INSERT INTO #input (text) VALUES ('23' + CHAR(13) + CHAR(10) + '333' + CHAR(13) + CHAR(10) + '7');
OPEN @cur;
WHILE FETCH @cur DO
SET @input = @cur.text;
SET @i = 1;
SET @delimiter_position = POSITION(@delimiter IN @input);
WHILE @delimiter_position > 0 DO
INSERT INTO #output (id, counter, part) VALUES (@cur.id, @i, LEFT(@input, @delimiter_position - 1));
SET @input = RIGHT(@input, LENGTH(@input) - (@delimiter_position + LENGTH(@delimiter)) + 1);
SET @delimiter_position = POSITION(@delimiter IN @input);
SET @i = @i + 1;
END WHILE;
INSERT INTO #output(id, counter, part) VALUES (@cur.id, @i, LEFT(@input, LENGTH(@input)));
END WHILE;
CLOSE @cur;
SELECT * FROM #output