> 데이터 베이스 > MySQL 튜토리얼 > 정보 스키마를 사용하여 MySQL에서 열을 동적으로 선택하는 방법은 무엇입니까?

정보 스키마를 사용하여 MySQL에서 열을 동적으로 선택하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-22 06:58:27
원래의
985명이 탐색했습니다.

How to Dynamically Select Columns in MySQL Using Information Schema?

MySQL의 동적 열 선택

MySQL에서는 알 수 없는 테이블 구조를 기반으로 하거나 예상되는 특정 열을 검색해야 하는 시나리오가 발생할 수 있습니다. 스키마 변경. 이는 SQL 문의 열 이름을 하드코딩하는 것이 비실용적일 때 문제가 됩니다. 이 기사에서는 모든 열을 선택하지 않고도 이 문제에 대한 해결책을 탐색합니다.

정보 스키마 활용

information_schema 데이터베이스에는 MySQL 서버의 모든 데이터베이스와 테이블에 대한 메타데이터가 포함되어 있습니다. 여기에는 이름, 데이터 유형, 테이블 구성원 등 열에 대한 정보를 저장하는 COLUMNS라는 테이블이 포함되어 있습니다.

동적 쿼리 구성

동적으로 열을 선택하려면 이름을 사용하면 MySQL 함수와 information_schema.COLUMNS 테이블의 조합을 활용할 수 있습니다. 단계별 접근 방식은 다음과 같습니다.

  1. 조건문(예: 특정 열 접두사 필터링)을 사용하여 information_schema.COLUMNS에서 관심 있는 열 이름을 추출합니다.
  2. 선택한 열 이름을 SELECT 문의 일부로 사용할 수 있는 문자열로 변환합니다.
  3. 다음 방법으로 준비된 문을 만듭니다. 연결된 문자열을 변수에 배치하고 EXECUTE로 실행합니다.

SQL 문 예

다음 SQL 문은 시작하는 열 이름을 동적으로 선택하는 방법을 보여줍니다. 테이블의 "접두사" 포함 "atable":

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

CREATE TABLE atable (

  prefix1 VARCHAR(10),

  prefix2 VARCHAR(10),

  notprefix3 INT,

  notprefix4 INT

);

 

INSERT INTO atable VALUES ('qwer qwer', 'qwerqwer', 1, 1);

INSERT INTO atable VALUES ('qwer qwer', 'asdfaasd', 1, 1);

INSERT INTO atable VALUES ('qwer qwer', 'qrt vbb', 1, 1);

INSERT INTO atable VALUES ('qwer qwer', 'sdfg sdg', 1, 1);

 

SELECT CONCAT('SELECT ', GROUP_CONCAT(c.COLUMN_NAME), ' FROM atable;')

INTO @query

FROM INFORMATION_SCHEMA.COLUMNS c

WHERE c.TABLE_NAME = 'atable'

  AND c.COLUMN_NAME LIKE 'prefix%'

ORDER BY c.ORDINAL_POSITION;

 

PREPARE stmt FROM @query;

 

EXECUTE stmt;

로그인 후 복사

출력:

이 문의 출력은 다음 SQL 문을 포함하는 단일 행입니다:

1

SELECT prefix1, prefix2 FROM atable;

로그인 후 복사

이 명령문을 실행하면 "atable"에서 "prefix1" 및 "prefix2" 열만 검색됩니다. 테이블.

위 내용은 정보 스키마를 사용하여 MySQL에서 열을 동적으로 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿