Sử dụng UPDATE kết hợp hàm LOWER() (hoặc UPPER()) áp dụng cho từng cột cần chuyển đổi.
Tạo bảng
mysql> CREATE TABLE DemoTable (
-> Id VARCHAR(100),
-> StudentFirstName VARCHAR(20),
-> StudentLastName VARCHAR(20),
-> StudentCountryName VARCHAR(10)
-> );
Chèn dữ liệu (chữ hoa/thường lẫn lộn)
mysql> INSERT INTO DemoTable VALUES('STU-101', 'John', 'Smith', 'US');
mysql> INSERT INTO DemoTable VALUES('STU-102', 'John', 'Doe', 'UK');
mysql> INSERT INTO DemoTable VALUES('STU-103', 'David', 'Miller', 'AUS');
Xem dữ liệu gốc
mysql> SELECT * FROM DemoTable;
+---------+------------------+-----------------+--------------------+ | Id | StudentFirstName | StudentLastName | StudentCountryName | +---------+------------------+-----------------+--------------------+ | STU-101 | John | Smith | US | | STU-102 | John | Doe | UK | | STU-103 | David | Miller | AUS | +---------+------------------+-----------------+--------------------+
Chuyển tất cả cột sang chữ thường
mysql> UPDATE DemoTable
-> SET Id = LOWER(Id),
-> StudentFirstName = LOWER(StudentFirstName),
-> StudentLastName = LOWER(StudentLastName),
-> StudentCountryName = LOWER(StudentCountryName);
Query OK, 3 rows affected (0.22 sec)
Kiểm tra kết quả
mysql> SELECT * FROM DemoTable;
+---------+------------------+-----------------+--------------------+ | Id | StudentFirstName | StudentLastName | StudentCountryName | +---------+------------------+-----------------+--------------------+ | stu-101 | john | smith | us | | stu-102 | john | doe | uk | | stu-103 | david | miller | aus | +---------+------------------+-----------------+--------------------+
Hàm chuyển đổi chữ cái
| Hàm | Chức năng | Ví dụ |
|---|---|---|
| LOWER(str) | Chuyển thành chữ thường | LOWER('ABC') → 'abc' |
| UPPER(str) | Chuyển thành chữ HOA | UPPER('abc') → 'ABC' |
| UCASE(str) | Alias của UPPER() | UCASE('abc') → 'ABC' |
| LCASE(str) | Alias của LOWER() | LCASE('ABC') → 'abc' |
Lưu ý
- Phải liệt kê từng cột trong
SET— MySQL không hỗ trợ "UPDATE tất cả cột string" - Chỉ ảnh hưởng cột kiểu chuỗi (CHAR, VARCHAR, TEXT...), cột số/ngày không thay đổi
- Collation决定大小写敏感性, nhưng LOWER/UPPER luôn hoạt động trên byte
- Với bảng lớn, cân nhắc chia batch để tránh khóa bảng lâu