คำสั่ง SQL เลือกแสดงข้อมูลใน Field เฉพาะบางส่วน

ในบางครั้งเราไม่ต้องการแสดงข้อมูลทั้งหมดเช่น เบอร์โทรศัพท์หรืออีเมล์จึงทำให้ต้องดึงมาบางส่วนเท่านั้น ใช้คำสั่งอะไรมาดูกันครับ

ตัวอย่าง ต้องการดึงเบอร์โทรศัพท์มา 6 หลักหน้า เช่น 0891234567 = 089123

SELECT MID(Tel,1,6) AS showTel FROM tb_member

ตัวอย่าง ต้องการดึงเบอร์โทรศัพท์มา 6 หลักหลัง เช่น 0891234567 = 234567

SELECT MID(Tel,1,-6) AS showTel FROM tb_member

“-6” คือดึงข้อมูลจากหลังมาหน้าจำนวน 6หลัก

จากตัวอย่างด้านบนเราสามารถเอามาปรับใช้อย่างเช่น ระบบเก็บ Serial  ซึ่งลักษณะรูปแบบ Serial อาจจะมี Prefix หรือคำย่อต่างๆ ตามด้วย Auto Number เพื่อให้รันสร้าง Serial ไปได้เรื่อยๆ โดยที่ไม่ซ้ำกัน การออกแบบก็แล้วแต่ครับ บางคนอาจจะแยกPrefix,คำย่อไปอีกอย่างล่ะ Field และ Auto Number อาจจะเป็น Primary Key  ตั้งเป็น Auto Increment จะได้รันเลขไปเลยก็ได้ แล้วตอนแสดงค่อยเอามาจับมา CONCAT หรือเอาฟิลด์ต่อกันแต่ถ้าอีกกรณี คือรวม Prefix,คำย่อ,Auto Number ไว้ Field เดียวกันเลย ปัญหาคือ? เราจะดึง Auto Number หลังสุดออกมาได้ยังไงเพื่อจะได้ใช้โปรแกรมนับเพิ่มต่อไป เช่น กรณีต้องดึงแยก CategoryID

ตัวอย่าง มีฟิลด์ชื่อ “Serial”, Prefix=”ABC”, Auto Number=8 หลัก

ABC00000001

ABC00000002

ABC00000003

เราต้องการดึง 00000003 ออกมา

SELECT MAX(MID(Serial, -8)) AS SerialNum FROM tb_serial WHERE CategoryID='1' LIMIT 0,1

จากตัวอย่างเป็นคำสั่งสั้นๆ ลองดูครับ