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

หาค่าสูงสุดจากคอลัมน์ VARCHAR ที่เก็บตัวเลขต่อท้าย เช่น Value440, Value345

เมื่อคอลัมน์ VARCHAR เก็บข้อมูลแบบ 'Prefix+Number' เช่น 'Value440' และต้องการหาค่าตัวเลขสูงสุด ให้ใช้ SUBSTRING() ตัดคำนำหน้าออก แล้ว CAST() เป็นตัวเลข และใช้ MAX()

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

สร้างตารางและเพิ่มข้อมูล:

mysql> create table DemoTable1337 (Value varchar(50));
mysql> insert into DemoTable1337 values('Value400'),('Value345'),('Value567'),('Value489');

ข้อมูลต้นฉบับ:

+----------+
| Value    |
+----------+
| Value400 |
| Value345 |
| Value567 |
| Value489 |
+----------+

คำสั่งหาค่าตัวเลขสูงสุด

mysql> select max(cast(substring(Value, 6) as decimal(10,2))) as MaximumValue from DemoTable1337;

ผลลัพธ์

+--------------+
| MaximumValue |
+--------------+
| 567.00       |
+--------------+

คำอธิบาย:

  • SUBSTRING(Value, 6) ตัดตัวอักษร 5 ตัวแรก ('Value') ทิ้ง เหลือตัวเลข (เริ่มตำแหน่งที่ 6)
  • CAST(... AS DECIMAL(10,2)) แปลงสตริงตัวเลขเป็นชนิดตัวเลขเพื่อเปรียบเทียบได้ถูกต้อง
  • MAX(...) หาค่าสูงสุด

ข้อควรระวัง: วิธีนี้สมมติ Prefix ความยาวคงที่ หาก Prefix ความยาวไม่คงที่ ควรใช้ REPLACE(Value, 'Value', '') หรือ REGEXP (MySQL 8.0+) แทน