Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

문자열을 분할하고 MySQL 테이블에 개별 값으로 삽입하시겠습니까?

<시간/>

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)