mySQL : how to find and get string in 1 query

วันนี้เราจะมารู้จักฟังก์ชันใน mysql query เพื่อใช้ในการค้นหาข้อความ หรือ คำ ในฐานข้อมูล เพื่อนำไปใช้ตามวัตถุประสงค์ต่างๆ ซึ่งมีฟังก์ชันที่เกี่ยวข้องคือ

  1. instr() ฟังก์ชันที่ใช้ในการค้นหาตำแหน่งเร่ิมต้นของตัวอักษร ,คำ, หรือประโยคที่เราสนใจ ซึ่งมีรูปแบบการเรียกใช้ดังนี้

instr(Source String, Search String)

Source String = ประโยคหรือข้อความตั้งต้นที่เราจะใช้ในการค้นหา

Search String = คำหรือข้อความที่เราต้องการค้นหา

2. substr() ฟังก์ชันที่ใช้ในการตัดคำ หรือข้อความออกมาจาก String

substr(Source String, index begin, length)

Source String = ประโยคหรือข้อความตั้งต้นที่เราจะใช้ในการตัดข้อความ

index begin = ตำแหน่งเร่ิมต้นที่ต้องการตัดข้อความ

length = จำนวนตัวอักษรที่เราจะตัดนับจากตำแหน่งเร่ิมต้นที่ระบุ (index begin)

เรามาดูตัวอย่างการใช้งานกัน

ตัวอย่าง 1. สมมติมีข้อความว่า ‘my-word-test-now’ เราต้องการตัดเอาคำว่า ‘test’ ออกมาจาก String เราทำได้โดย 2 ขั้นตอน คือ

1.1 ใช้ instr() ค้นหาตำแหน่งเริ่มต้นคำว่า ‘test’ ดังนี้ instr(‘my-word-test-now’,’test’) เราจะได้ตำแหน่งเร่ิมต้นของคำว่า ‘test’

1.2 ใช้ substr() ตัดคำว่า test ออกจากประโยคโดยในตัวอย่างคำว่า test มีความยาว 4 ตัวอักษร เราก็กำหนด length=4 ดังนี้ substr(‘my-word-test-now’,<index begin>,4)

จากตัวอย่างข้างต้นเราเขียนในรูปแบบ mysql query ได้ดังนี้

SELECT ‘my-word-test-now’ source,
instr(‘my-word-test-now’,’test’) index_begin,
substr(‘my-word-test-now’,instr(‘my-word-test-now’,’test’) , 4) result
FROM mytab limit 1

ผลลัพธ์ที่ได้คือ

sourceindex_beginresult
my-word-test-now9test

ในตัวอย่างเราใช้คำสั่ง instr() ใส่ใน substr() ตรงตำแหน่ง index begin เพราะเราใช้ผลลัพธ์ของ instr() ได้เลย

You may also like...