Order By …

ในการฝึกงานที่ยาวนานหกเดือนนี้ ทำให้ได้รู้จักอะไรใหม่ๆและการ Coding และ Manage data แบบที่ไม่เคยทำมาก่อนในชั้นเรียน ในวันนี้เราจะเขียนบทความนี้เป็นบทความแรก ซึ่งจะกล่าวถึงการ Sort ในฐานข้อมูล หรือที่รู้จักกันโดยทั่วๆไปในคำสั่ง order by

ในการ Sort ข้อมูลในเบสสามารถทำได้หลายท่ามาก โดยปกติจะ Sort แบบ

select * from table_name order by some_columns ASC (น้อยไปมาก)

หรือ

select * from table_name order by some_columns DESC (มากไปน้อย)

แน่นอนว่าในบทความนี้จะไม่ได้มาพูดถึงการ sort เบๆพวกนี้ อย่าลืมว่าข้อมูลในเบส อาจจะมีความเป็นไปได้ที่อาจจะมีพวกตัวเลขปะปนอยู่ด้วย เช่น หนังสือเล่มที่ 1 … หนังสือเล่มที่ 100

ในกรณีนี้หากใช้ order by ตามปกติจะได้

  • หนังสือเล่มที่ 1 … หนังสือเล่มที่ 10 … หนังสือเล่มที่ 100
  • หนังสือเล่มที่ 2… หนังสือเล่มที่ 20 …

ดังนั้นในกรณีแบบนี้ เราจะ sort ตามจำนวนตัวอักษรโดยใช้ฟังก์ชัน length ดังนี้

select * from table_name order by LENGTH(some_columns), some_columns

หรืออาจจะใช้ฟังก์ abs ก็ได้

select * from table_name order by ABS(some_columns), some__columns

ทั้งนี้หลายๆคนอาจเจอกรณีที่เป็นภาษาไทย และ sort เป็น ก, ข, เก, เข ซึ่งการเรียงลำดับแบบนี้มาจากการที่มันมองสระของคำด้วยใน Unicode utf-8 ดังนั้นหากต้องการให้มันเรียงลำดับตามพจนานุกรม จะสามารถเขียน Query ได้ดังนี้

select * from table_name order by CONVERT(‘some_columns’ USING tis620)

เป็นการเปลี่ยน Unicode utf-8 ให้เป็น tis620 แทน ซึ่งจะสามารถ sort ได้ตามตัวอักษร

ขออภัยหากไม่มีรูปภาพประกอบ อย่างไรก็ตามบทความนี้เป็นการกลั่นกรองความรู้ใหม่ๆในช่วงฝึกงานเท่านั้น หากผิดพลาดประการใดขออภัยไว้ ณ ที่นี้ด้วยครัช -/\-

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade