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