집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 쉼표로 구분된 값을 개별 행으로 변환하는 방법은 무엇입니까?
MySQL에서 쉼표로 구분된 값을 개별 행으로 변환
이 가이드에서는 MySQL 열 내의 쉼표로 구분된 값을 개별 행으로 변환하는 방법을 보여줍니다. 다음과 같이 쉼표로 구분된 데이터가 포함된 열이 있는 테이블이 있다고 가정해 보겠습니다.
<code>somethingA,somethingB,somethingC somethingElseA, somethingElseB</code>
목표는 이 데이터를 다음과 같이 재구성하는 것입니다.
<code>somethingA somethingB somethingC somethingElseA somethingElseB</code>
이 SQL 쿼리는 다음과 같은 변환을 수행합니다.
<code class="language-sql">SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t.values, ',', n.n), ',', -1) value FROM table1 t CROSS JOIN ( SELECT a.N + b.N * 10 + 1 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 ORDER BY n ) n WHERE n.n <= LENGTH(t.values) - LENGTH(REPLACE(t.values, ',', '')) + 1;</code>
설명:
이 쿼리는 동적으로 생성된 숫자 테이블(하위 쿼리)과 SUBSTRING_INDEX()
함수를 교묘하게 사용합니다. SUBSTRING_INDEX()
구분 기호를 기준으로 하위 문자열을 추출합니다. 숫자 테이블은 각 쉼표로 구분된 값에 대한 색인을 제공합니다. WHERE
절은 쿼리가 각 행에서 쉼표로 구분된 실제 요소 수까지만 값을 처리하도록 보장합니다.
핵심 사항:
SUBSTRING_INDEX(string, delimiter, count)
: 이 기능은 매우 중요합니다. string
은 입력이고, delimiter
은 쉼표이며, count
은 사용할 구분 기호를 지정합니다. count
의 -1
은 마지막 구분 기호 이후의 모든 항목을 가져옵니다.WHERE
절은 원본 문자열의 쉼표 수에 따라 반환되는 행 수를 동적으로 조정하여 오류를 방지합니다.이 방법은 쉼표로 구분된 값을 개별 행으로 효과적으로 분할하여 더 깔끔하고 관리하기 쉬운 데이터세트를 만듭니다.
위 내용은 MySQL에서 쉼표로 구분된 값을 개별 행으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!