Dùng MD5(CONCAT(cot1, cot2, ...)) để sinh hash đại diện cho toàn bộ hàng (dùng cho so sánh, detect thay đổi, CDC...).
Cú pháp
SELECT MD5(CONCAT(cot1, cot2, cot3, ...)) AS row_hash FROM ten_bang;
Ví dụ minh họa
Tạo bảng getHashValueForEachRow:
CREATE TABLE getHashValueForEachRow (
Id INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(20), Age INT, Marks INT, PRIMARY KEY (Id)
);
INSERT INTO getHashValueForEachRow (Name, Age, Marks) VALUES
('Larry',24,89), ('David',26,98), ('Bob',21,67), ('Sam',22,56), ('Mike',25,80);
Truy vấn hash mỗi hàng
SELECT MD5(CONCAT(Id, Name, Age, Marks)) AS HashValueOfEachRow
FROM getHashValueForEachRow;
Kết quả:
+----------------------------------+
| HashValueOfEachRow |
+----------------------------------+
| a5f6b8e1a701d467cf1b4d141027ca27 |
| 6e649522c773b6a6672e625939eb4225 |
| 8bd419e9b7e9e014a4dc0596d70e93c8 |
| 504cf50194a2a6e3481dfa9b8568b9e6 |
| 08716a8dad7105a00c49ea30d278b315 |
+----------------------------------+
Ứng dụng:
- Change Data Capture (CDC): so sánh hash cũ/mới để phát hiện thay đổi.
- Deduplication: tìm hàng trùng lặp toàn bộ cột.
- Cache key: key cache từ toàn bộ hàng.
Lưu ý: MD5 cho 128-bit (32 hex chars). Cần chống va chạm cao hơn → SHA2(CONCAT(...), 256) (64 hex chars). CONCAT bỏ qua NULL → dùng COALESCE(cot, '') nếu cột có NULL.