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 중국어 웹사이트의 기타 관련 기사를 참조하세요!