เมื่อคอลัมน์ 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+) แทน