Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีสร้าง Hash Value (MD5) สำหรับแต่ละแถวใน MySQL

ใช้ MD5(CONCAT(col1, col2, col3...)) สร้าง Hash รวมค่าทุกคอลัมน์ของแถว

ไวยากรณ์

SELECT MD5(CONCAT(col1, col2, col3, ...)) AS rowHash FROM yourTable;

ตัวอย่างการใช้งาน

สร้างตาราง getHashValueForEachRow:

mysql> CREATE TABLE getHashValueForEachRow (
    -> Id INT NOT NULL AUTO_INCREMENT,
    -> Name VARCHAR(20),
    -> Age INT,
    -> Marks INT,
    -> PRIMARY KEY(Id)
    -> );

เพิ่มข้อมูล:

mysql> INSERT INTO getHashValueForEachRow(Name, Age, Marks) VALUES
    -> ('Larry',24,89),('David',26,98),('Bob',21,67),('Sam',22,56),('Mike',25,80);

ข้อมูลทั้งหมด

+----+-------+------+-------+
| Id | Name  | Age  | Marks |
+----+-------+------+-------+
| 1  | Larry | 24   | 89    |
| 2  | David | 26   | 98    |
| 3  | Bob   | 21   | 67    |
| 4  | Sam   | 22   | 56    |
| 5  | Mike  | 25   | 80    |
+----+-------+------+-------+

คำสั่งสร้าง MD5 Hash ทุกแถว

mysql> SELECT MD5(CONCAT(Id, Name, Age, Marks)) AS HashValueOfEachRow FROM getHashValueForEachRow;

ผลลัพธ์

+----------------------------------+
| HashValueOfEachRow               |
+----------------------------------+
| a5f6b8e1a701d467cf1b4d141027ca27 |
| 6e649522c773b6a6672e625939eb4225 |
| 8bd419e9b7e9e014a4dc0596d70e93c8 |
| 504cf50194a2a6e3481dfa9b8568b9e6 |
| 08716a8dad7105a00c49ea30d278b315 |
+----------------------------------+

ประโยชน์: ตรวจสอบความสมบูรณ์ข้อมูล (Data Integrity), ตรวจจับการเปลี่ยนแปลงแถว, Sync ข้อมูลระหว่างระบบ

หมายเหตุ: MD5 ไม่เหมาะสำหรับความปลอดภัยทางเข้ารหัส ใช้ SHA2() แทนถ้าต้องการความปลอดภัยสูงกว่า