집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 쉼표로 구분된 값을 행으로 분할하는 방법은 무엇입니까?
MySQL에서 쉼표로 구분된 데이터 변환
이 가이드에서는 MySQL 열 내의 쉼표로 구분된 값을 개별 행으로 효율적으로 변환하는 방법을 설명합니다. 우리는 MySQL 기능과 영리한 기술을 활용할 것입니다:
숫자 시퀀스 생성: 먼저 정수 시퀀스가 포함된 임시 테이블을 생성합니다(또는 기존 테이블 사용). 이 순서는 대상 열의 쉼표로 구분된 값의 최대 개수보다 커야 합니다. 이 시퀀스는 개별 값을 추출하기 위한 인덱스 역할을 합니다.
SUBSTRING_INDEX
활용: 여기에서는 SUBSTRING_INDEX
기능이 핵심입니다. 구분 기호와 지정된 항목을 기반으로 하위 문자열을 추출합니다. 각 값을 분리하기 위해 숫자 순서와 함께 이를 두 번 사용합니다.
다음은 이 접근 방식을 보여주는 예입니다.
<code class="language-sql">SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t.values, ',', n.n), ',', -1) AS value FROM table1 t CROSS JOIN (SELECT a.N + b.N * 10 + c.N * 100 AS n FROM (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) c ) n WHERE n.n <= LENGTH(t.values) - LENGTH(REPLACE(t.values, ',', '')) + 1;</code>
설명:
SELECT
문은 숫자 시퀀스를 생성합니다(필요에 따라 데이터에 맞게 조정).CROSS JOIN
이 시퀀스를 테이블(table1
)과 결합합니다.SUBSTRING_INDEX(t.values, ',', n.n)
은 n번째 쉼표까지 하위 문자열을 추출합니다.SUBSTRING_INDEX(..., ',', -1)
그런 다음 이전 결과에서 문자열 끝까지의 값을 추출합니다.WHERE
절은 쉼표로 구분된 문자열 범위 내의 값만 처리하도록 보장합니다. LENGTH(t.values) - LENGTH(REPLACE(t.values, ',', '')) 1
조건은 값의 개수를 동적으로 계산합니다.이 방법은 쉼표로 구분된 값을 개별 행으로 효과적으로 분할하여 MySQL의 데이터 조작을 위한 깔끔하고 효율적인 솔루션을 제공합니다. table1
및 values
을 실제 테이블 및 열 이름으로 바꿔야 합니다.
위 내용은 MySQL에서 쉼표로 구분된 값을 행으로 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!