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

배열에서 일치하는 특정 레코드를 가져오는 MySQL 쿼리(쉼표로 구분된 값)

<시간/>

쉼표로 구분된 값에서 레코드를 가져오려면 MySQL FIND_IN_SET()을 사용하십시오. 먼저 테이블을 생성하겠습니다 -

mysql> create table DemoTable1548
   -> (
   -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> StudentName varchar(20),
   -> ArrayListOfMarks varchar(100)
   -> );
Query OK, 0 rows affected (0.88 sec)

삽입 명령을 사용하여 테이블에 일부 레코드 삽입 -

mysql> insert into DemoTable1548(StudentName,ArrayListOfMarks) values('Chris','56,78,90,87');
Query OK, 1 row affected (0.29 sec)
mysql> insert into DemoTable1548(StudentName,ArrayListOfMarks) values('Bob','90,78,65');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1548(StudentName,ArrayListOfMarks) values('David','91,34,56,78,87');
Query OK, 1 row affected (0.16 sec)

select 문을 사용하여 테이블의 모든 레코드 표시 -

mysql> select * from DemoTable1548;

이것은 다음과 같은 출력을 생성합니다 -

+-----------+-------------+------------------+
| StudentId | StudentName | ArrayListOfMarks |
+-----------+-------------+------------------+
|         1 | Chris       |    56,78,90,87   |
|         2 | Bob         |       90,78,65   |
|         3 | David       | 91,34,56,78,87   |
+-----------+-------------+------------------+
3 rows in set (0.00 sec)

다음은 쉼표로 구분된 값에서 일치하는 특정 레코드를 가져오는 쿼리입니다. -

mysql> select * from DemoTable1548 where find_in_set('87',ArrayListOfMarks);

이것은 다음과 같은 출력을 생성합니다 -

+-----------+-------------+------------------+
| StudentId | StudentName | ArrayListOfMarks |
+-----------+-------------+------------------+
|         1 | Chris       |    56,78,90,87   |
|         3 | David       | 91,34,56,78,87   |
+-----------+-------------+------------------+
2 rows in set (0.00 sec)