Source Code 0

Sqlite3에서 CTE로 문자열 분리를 해요

sqlite에서 문자열을 분리하는 쿼리는 다양하지만 WITH RECURSIVE 방법이 적절해요.

                                                       

 

1. 핵심로직 살펴보기.

분리하려고 하는 문자열 마지막에 구분문자를 추가하여 모든 문자을 분리해요. 이렇게 하면 쿼리 결과를 다시 나누지 않으므로 간편해져요.

WITH RECURSIVE split(pos,val,text) AS (
	SELECT 0, '', '11,222,3333,last' || ',' text
	UNION ALL
	SELECT
		instr(text, ','),
		substr(text, 1, instr(text, ',')-1),
		substr(text, instr(text, ',')+1)
	FROM split
	WHERE text<>''
	LIMIT 1,65535
)
SELECT val FROM split;

 

쿼리를 실행하면 아래 결과가 출력되요. 이 중에서 val 칼럼을 사용하면 되겠쩌.

pos val text
3 11 222,3333,last,
4 222 3333,last,
5 3333 last,
5 last  

 

댓글쓰기

댓글 삭제

댓글을 완전히 삭제할까요?

댓글