Mysql 문자열 분할
문제:
쉼표가 포함된 열이 있는 테이블이 있습니다. -구분된 값. 이러한 값을 별도의 행으로 분할하고 각 값이 행에 해당하도록 하려고 합니다.
예를 들어 테이블이 주어지면:
Col1 | col2 |
---|---|
1 | a,b,c |
2 | d,e |
다음 행을 추출하려고 합니다.
Col1 | col2 |
---|---|
1 | a |
1 | b |
1 | c |
2 | d |
2 | e |
해결책:
이는 MySQL을 사용하여 달성할 수 있습니다. 저장 프로시저. 다음 SQL 스크립트에는 저장 프로시저와 여기에 사용되는 함수가 모두 포함되어 있습니다.
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 ;
이 저장 프로시저를 사용하려면 다음 쿼리를 실행할 수 있습니다.
CALL BadTableToGoodTable();
이렇게 하면 원하는 데이터가 담긴 'GoodTable'이라는 새 테이블.
위 내용은 MySQL 열의 쉼표로 구분된 값을 별도의 행으로 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!