Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Lọc cột theo kiểu dữ liệu (DATA_TYPE) trong MySQL qua INFORMATION_SCHEMA

Để liệt kê tất cả cột có kiểu dữ liệu cụ thể (ví dụ: TEXT, VARCHAR, INT, JSON) trong database hiện tại, truy vấn view INFORMATION_SCHEMA.COLUMNS với điều kiện DATA_TYPE = 'ten_kieu'.

Truy vấn: Tìm tất cả cột kiểu TEXT

mysql> SELECT TABLE_NAME, COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE DATA_TYPE = 'text' 
  AND TABLE_SCHEMA = DATABASE();

Kết quả mẫu (rút gọn từ output thực tế)

+---------------------------------------------+--------------------------------+
| TABLE_NAME                                  | COLUMN_NAME                    |
+---------------------------------------------+--------------------------------+
| COLUMNS                                     | COLUMN_DEFAULT                 |
| COLUMNS                                     | COLUMN_COMMENT                 |
| FILES                                       | FILE_NAME                      |
| PARTITIONS                                  | PARTITION_DESCRIPTION          |
| PARTITIONS                                  | PARTITION_COMMENT              |
| ROUTINES                                    | ROUTINE_COMMENT                |
| replication_group_member_stats              | LAST_CONFLICT_FREE_TRANSACTION |
| password_history                            | Password                       |
| component                                   | component_urn                  |
| innodb_buffer_stats_by_schema               | object_schema                  |
| ... (nhiều bảng hệ thống và bảng người dùng) ... |
| DemoTable                                   | CustomerAllProductPrice        |
| DemoTable                                   | Title                          |
| textdemo                                    | name                           |
| texttabledemo                               | Address                        |
| searchtextdemo                              | BookName                       |
| ...                                         | ...                            |
+---------------------------------------------+--------------------------------+
240 rows in set (0.28 sec)

Giải thích

  • DATA_TYPE: Tên kiểu dữ liệu chuẩn hóa (không bao gồm độ dài, unsigned, zerofill). Ví dụ: varchar, text, int, datetime, json.
  • COLUMN_TYPE: Kiểu đầy đủ với tham số (ví dụ: varchar(200), int(11) unsigned). Dùng cột này nếu cần lọc chính xác độ dài.
  • TABLE_SCHEMA = DATABASE(): Chỉ xem database hiện tại. Bỏ đi để xem toàn server.

Các DATA_TYPE phổ biến trong MySQL

NhómDATA_TYPE values
Số nguyêntinyint, smallint, mediumint, int, bigint
Số thựcdecimal, float, double
Chuỗi cố địnhchar, binary
Chuỗi khả biếnvarchar, varbinary
Blob/Texttinyblob, blob, mediumblob, longblob, tinytext, text, mediumtext, longtext
Ngày/Giờdate, time, datetime, timestamp, year
Khácenum, set, json, geometry

Ứng dụng thực tế

  • Audit schema: Tìm cột dùng TEXT thay vì VARCHAR (hoặc ngược lại) không phù hợp.
  • Migration: Chuẩn bị script ALTER TABLE cho các cột kiểu cũ (ví dụ: TINYTEXT -> VARCHAR(255)).
  • Tìm cột JSON để kiểm tra index (MySQL 8.0+ hỗ trợ Functional Index trên JSON).
  • Sinh code: Lọc cột theo kiểu để map sang kiểu dữ liệu ngôn ngữ lập trình (Java, Go, C#...).