MySQL에서 준비된 명령문을 사용하여 이를 달성할 수 있습니다. 먼저 테이블을 생성해야 합니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table University - > ( - > UserId int, - > UniversityId int - > ); Query OK, 0 rows affected (0.64 sec)
먼저 위에서 언급한 열에 값을 설정해 보겠습니다. 여기서는 UserId 열에 대해 쉼표로 구분된 값으로 문자열을 설정했습니다. 이것을 분할하여 테이블에 삽입합니다.
mysql> SET @userId = '8,9,10'; Query OK, 0 rows affected (0.00 sec) mysql> SET @UniversityId = 100; Query OK, 0 rows affected (0.00 sec) mysql> SET @myValues = REPLACE(@userId, ',', CONCAT(', ', @UniversityId, '),(')); Query OK, 0 rows affected (0.00 sec) mysql> SET @myValues = CONCAT('(', @myValues, ', ', @UniversityId, ')'); Query OK, 0 rows affected (0.00 sec) mysql> SET @insertQuery1 = CONCAT('INSERT INTO University VALUES', @myValues); Query OK, 0 rows affected (0.00 sec)
모든 단계를 구현한 후 위에서 언급한 @insertQuery1을 실행해야 합니다.
쿼리는 다음과 같습니다
mysql> PREPARE st FROM @insertQuery1; Query OK, 0 rows affected (0.00 sec) Statement prepared mysql> EXECUTE st; Query OK, 3 rows affected (0.18 sec) Records: 3 Duplicates: 0 Warnings: 0
이제 select 문을 사용하여 테이블의 모든 레코드를 표시합니다.
mysql> select *from University;
다음은 문자열(8, 9, 10)을 성공적으로 분할하고 개별 값으로 삽입했음을 표시하는 출력입니다.
+--------+--------------+ | UserId | UniversityId | +--------+--------------+ | 8 | 100 | | 9 | 100 | | 10 | 100 | +--------+--------------+ 3 rows in set (0.00 sec)
이제 준비된 명령문의 할당을 해제합니다.
쿼리는 다음과 같습니다
mysql> DEALLOCATE PREPARE st; Query OK, 0 rows affected (0.00 sec)