Select by Attribute ด้วยคำสั่ง LIKE

ในการ query ข้อมูลที่เป็นตัวอักษรใน attribute ที่มีหลายๆ record บางครั้งก็ชวนให้ปวดหัวได้เหมือนกันนะครับ

ถ้าเป็นตัวอักษรที่มีหลายๆ อักขระ แล้วเราจำไม่ได้ว่าคำเต็มมันเก็บไว้ใน attribute ว่าอะไรบ้าง

ซึ่งรูปแบบคำสั่ง ที่เรามักใช้เบื้องต้นเลยคือ  “ชื่อ field” = ‘คำที่ค้น’

2016-03-18_15-24-53

จากรูปสมมติถ้าผมต้องการ select HIGHWAY 1 ขึ้นมา ผมต้อง พิมพ์  “RDLNNAME” = ‘HIGHWAY 1’

ถ้าเราพิมพ์ผิดจะค้นหาไม่พบผลลัพธ์นะครับ  แล้วถ้าสมมติเราต้องการค้นหา HIGHWAY ที่ขึ้นต้นด้วยเลข 1 ละทำไง

จะให้ใช้เครื่องหมาย = ก็คงไม่ใช่แล้วละ    การแก้ปัญหาโดยการใช้  LIKE แทน เครื่องหมาย =

2016-03-18_15-33-41

รูปแบบคำสั่ง จะเป็น “RDLNNAME” like ‘HIGHWAY 1%’   คือ  คำที่ขึ้นต้นด้วย HIGHWAY 1   จะโดนเลือกมาทั้งหมด

โดยเราจะใช้เครื่องหมาย% แทนคำอะไรก็ได้ที่ตามหลัง HIGHWAY 1 มาจะโดนเลือกทั้งหมด

แต่ก็มีปัญหาอีกคือ สมมติใน attribute อาจจะมีการพิมพ์ผิดก่อนหน้า  HIGHWAY 1 อาจจะมีการเคาะ spacebar ก่อนพิมพ์

กลายเป็นมีช่องว่างนำหน้าอยู่  เราก็จะค้นหาไม่เจอเนื่องจากใน record ไม่ได้ขึ้นต้นด้วย HIGHWAY 1

2016-03-18_15-41-251

วิธีการทำไง ให้ใช้เครื่องหมาย % นำหน้า HIGHWAY 1 ไปอีก 1 ตัว ที่นี้ไม่ว่าHIGHWAY 1 จะอยู่ตรงไหนของประโยคก็จะโดนเลือกมาเหมือนกัน

2016-03-18_15-44-37

กรณีที่เราต้องการบังคับจะเลือกตำแหน่งตัวอักขระที่เราต้องการ

วิธีการคือให้ใช้เครื่องหมาย underscore “_” แทนตำแหน่งที่เราต้องการข้ามไป เช่นถ้าต้องการ select record ที่มีตัว G อยู่ อักขระที่ 3 ก็ใช้   _  นำหน้า 2 ตัว ดังรูป

record ที่เข้าเงื่อนไขก็จะโดนเลือก HIGHWAY 1 อีก record ที่ไม่โดนเลือกเพราะมีตัว G อยู่ในตำแหน่งอักขระที่ 4 (อักขระที่ 1 = space, 2 = H , 3 = I, 4 = G,…)

2016-03-18_15-49-29

 

ความแตกต่าง ของ % และ _ คือ % จะใช้แทนอักขระ คำ กลุ่มคำที่มีหลายๆ อักขระ แต่ _ ใช้แทน อักขระเพียง 1 ตัวเท่านั้น

ลองนำไปประยุกต์ใช้งานดูนะครับ

ที่มา : geo2ass.wordpress.com

 

Posted in GIS

Leave a Reply

Your email address will not be published. Required fields are marked *