เมื่อผู้ใช้งานต้องการค้นหาข้อมูลในระบบ โดยพิมพ์คำค้นดังนี้58530137,58530199,58530143,58530178 ซึ่งเป็นการค้นหาข้อมูลนิสิตครั้งละหลายๆ คน และต้องการให้ข้อมูลเรียงตามลำดับตามที่ได้พิมพ์คำค้นไป
เราสามารถเขียนคำสั่งในรูปแบบ ดังนี้
SELECT * FROM STUDENT WHERE STUDENTCODE IN
('58530137','58530199','58530143','58530178')
ORDER BY DECODE(STUDENTCODE,
58530137, 1,
58530199, 2,
58530143, 3,
58530178, 4,
5) ASC;
ข้อมูลจะถูกกำหนดให้มีค่าเป็น 1, 2, 3, 4 และข้อมูลนอกเหนือจากนี้ให้มีค่าเป็น 5 และเรียงจากน้อยไปหามาก (ASC) 1 ไปถึง 5
ผลลัพธ์
หรือสามารถเขียนในรูปแบบ CASE WHEN ... THEN ให้ผลลัพธ์เหมือนกัน (การเขียนในรูปแบบ CASE WHEN ... THEN สามารถอ่านเพิ่มเติมจากบทความของ คุณสุกัญญา เรื่อง การใช้ order by แบบมีเงื่อนไข เขียนเมื่อ 10 ก.พ. 58)
ตัวอย่าง
SELECT * FROM STUDENT WHERE STUDENTCODE IN
('58530137','58530199','58530143','58530178')
ORDER BY CASE WHEN STUDENTCODE = '58530137' THEN 1
WHEN STUDENTCODE = '58530199' THEN 2
WHEN STUDENTCODE = '58530143' THEN 3
WHEN STUDENTCODE = '58530178' THEN 4
ELSE 5 END;