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 |
|
|
댓글이 사용 중지되었습니다.