> 데이터 베이스 > MySQL 튜토리얼 > MySQL 문자열 열의 쉼표로 구분된 값을 여러 행으로 분할하려면 어떻게 해야 합니까?

MySQL 문자열 열의 쉼표로 구분된 값을 여러 행으로 분할하려면 어떻게 해야 합니까?

Patricia Arquette
풀어 주다: 2024-11-30 09:29:14
원래의
791명이 탐색했습니다.

How Can I Split Comma-Separated Values in a MySQL String Column into Multiple Rows?

Mysql 문자열 분할: 쉼표로 구분된 값으로 행 확장

이 질문에서 사용자는 다음을 포함하는 테이블을 변환하는 솔루션을 찾고 있습니다. 쉼표로 구분된 값이 있는 문자열 열을 여러 행이 있는 새 테이블로 변환하고 값을 쉼표로 나눕니다. 질문은 기존 스레드와 정확히 중복되지 않는다고 주장하지만 유사성을 공유합니다.

이 요구 사항을 해결하기 위해 저장 프로시저를 사용할 수 있습니다.

DELIMITER $$

CREATE FUNCTION strSplit(x VARCHAR(65000), delim VARCHAR(12), pos INTEGER) 
RETURNS VARCHAR(65000)
BEGIN
  DECLARE output VARCHAR(65000);
  SET output = REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos)
                 , LENGTH(SUBSTRING_INDEX(x, delim, pos - 1)) + 1)
                 , delim
                 , '');
  IF output = '' THEN SET output = null; END IF;
  RETURN output;
END $$


CREATE PROCEDURE BadTableToGoodTable()
BEGIN
  DECLARE i INTEGER;

  SET i = 1;
  REPEAT
    INSERT INTO GoodTable (col1, col2)
      SELECT col1, strSplit(col2, ',', i) FROM BadTable
      WHERE strSplit(col2, ',', i) IS NOT NULL;
    SET i = i + 1;
    UNTIL ROW_COUNT() = 0
  END REPEAT;
END $$

DELIMITER ;
로그인 후 복사

이 저장 프로시저가 초기화됩니다. 정수 변수 i. strSplit 함수를 사용하여 col2 열의 각 문자열 값을 반복하여 위치 i에서 해당 하위 문자열을 추출합니다. 추출된 하위 문자열은 쉼표로 구분된 값 중 하나를 나타냅니다.

null이 아닌 하위 문자열이 더 이상 없을 때까지 각 반복마다 i를 증가시키면서 절차가 계속됩니다. 이렇게 하면 모든 쉼표로 구분된 값이 분할되어 새 테이블에 삽입됩니다.

요약하면 이 저장 프로시저는 쉼표로 구분된 값이 있는 테이블을 여러 행이 있는 테이블로 변환하는 강력한 솔루션을 제공합니다. 데이터를 조작하고 분석하기가 더 쉽습니다.

위 내용은 MySQL 문자열 열의 쉼표로 구분된 값을 여러 행으로 분할하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿