ในการ query ข้อมูลที่เป็นตัวอักษรใน attribute ที่มีหลายๆ record บางครั้งก็ชวนให้ปวดหัวได้เหมือนกันนะครับ
ถ้าเป็นตัวอักษรที่มีหลายๆ อักขระ แล้วเราจำไม่ได้ว่าคำเต็มมันเก็บไว้ใน attribute ว่าอะไรบ้าง
ซึ่งรูปแบบคำสั่ง ที่เรามักใช้เบื้องต้นเลยคือ “ชื่อ field” = ‘คำที่ค้น’
จากรูปสมมติถ้าผมต้องการ select HIGHWAY 1 ขึ้นมา ผมต้อง พิมพ์ “RDLNNAME” = ‘HIGHWAY 1’
ถ้าเราพิมพ์ผิดจะค้นหาไม่พบผลลัพธ์นะครับ แล้วถ้าสมมติเราต้องการค้นหา HIGHWAY ที่ขึ้นต้นด้วยเลข 1 ละทำไง
จะให้ใช้เครื่องหมาย = ก็คงไม่ใช่แล้วละ การแก้ปัญหาโดยการใช้ LIKE แทน เครื่องหมาย =
รูปแบบคำสั่ง จะเป็น “RDLNNAME” like ‘HIGHWAY 1{8645ed30ebfee2716765f004cf3f74a8c4ef5e59d5d4d4ef1cf40763c4bdb1fe}’ คือ คำที่ขึ้นต้นด้วย HIGHWAY 1 จะโดนเลือกมาทั้งหมด
โดยเราจะใช้เครื่องหมาย{8645ed30ebfee2716765f004cf3f74a8c4ef5e59d5d4d4ef1cf40763c4bdb1fe} แทนคำอะไรก็ได้ที่ตามหลัง HIGHWAY 1 มาจะโดนเลือกทั้งหมด
แต่ก็มีปัญหาอีกคือ สมมติใน attribute อาจจะมีการพิมพ์ผิดก่อนหน้า HIGHWAY 1 อาจจะมีการเคาะ spacebar ก่อนพิมพ์
กลายเป็นมีช่องว่างนำหน้าอยู่ เราก็จะค้นหาไม่เจอเนื่องจากใน record ไม่ได้ขึ้นต้นด้วย HIGHWAY 1
วิธีการทำไง ให้ใช้เครื่องหมาย {8645ed30ebfee2716765f004cf3f74a8c4ef5e59d5d4d4ef1cf40763c4bdb1fe} นำหน้า HIGHWAY 1 ไปอีก 1 ตัว ที่นี้ไม่ว่าHIGHWAY 1 จะอยู่ตรงไหนของประโยคก็จะโดนเลือกมาเหมือนกัน
กรณีที่เราต้องการบังคับจะเลือกตำแหน่งตัวอักขระที่เราต้องการ
วิธีการคือให้ใช้เครื่องหมาย underscore “_” แทนตำแหน่งที่เราต้องการข้ามไป เช่นถ้าต้องการ select record ที่มีตัว G อยู่ อักขระที่ 3 ก็ใช้ _ นำหน้า 2 ตัว ดังรูป
record ที่เข้าเงื่อนไขก็จะโดนเลือก HIGHWAY 1 อีก record ที่ไม่โดนเลือกเพราะมีตัว G อยู่ในตำแหน่งอักขระที่ 4 (อักขระที่ 1 = space, 2 = H , 3 = I, 4 = G,…)
ความแตกต่าง ของ {8645ed30ebfee2716765f004cf3f74a8c4ef5e59d5d4d4ef1cf40763c4bdb1fe} และ _ คือ {8645ed30ebfee2716765f004cf3f74a8c4ef5e59d5d4d4ef1cf40763c4bdb1fe} จะใช้แทนอักขระ คำ กลุ่มคำที่มีหลายๆ อักขระ แต่ _ ใช้แทน อักขระเพียง 1 ตัวเท่านั้น
ลองนำไปประยุกต์ใช้งานดูนะครับ
ที่มา : geo2ass.wordpress.com