วันอังคารที่ 6 กรกฎาคม พ.ศ. 2553

order by เล็กๆ

วันนี้ไ้ด้ลองทำการ search จากฐานข้อมูลซึ่งก็มีทั้งตัวเลขและตัวอักษร ออกมายเยอะมากมาย ได้สังเกตเห็นว่าตังเลขมันเรียงกันนิน่า

ก็เลยคิดที่จะให้คำสั่ง


ORDER BY xxx ASC;
xxx ชื่อคอลัมที่ต้องการ sort
ดูจะให้มันเรียงกันเป็นลำดับ

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13

แต่ผลที่ได้ออกมากลับกลายเป็น

1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9
ก็เลยสงสัยกลับไปดูยังฐานข้อมูลปรากฏว่า Type ในฐานข้อมูลประกาศ เป็น VARCHAR2
อ้าวแล้วที่นี่จะทำยังงัยดีล่ะครับ ก็เลยไปหาข้อมูลพบว่า หากต้องการเรียงให้เป็นลำดับที่ล่ะก็เราจะต้องแปลง VARCHAR2 นั้นให้เป็น
Number ซะก่อน จากนั้นค่อยใช้คำสั่งในการ Sort ก็จะได้ ผลออกมาเป็น 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13


ORDER BY TO_NUMBER(xxx) ASC;
xxx ชื่อคอลัมที่ต้องการ sort
หวังว่าความรู้เล็กๆน้อยๆ อันนี้คงเป็นประโยชน์ไม่มากก็น้อย
ขอบคุณครับ