mySQL : how to find and get string in 1 query
วันนี้เราจะมารู้จักฟังก์ชันใน mysql query เพื่อใช้ในการค้นหาข้อความ หรือ คำ ในฐานข้อมูล เพื่อนำไปใช้ตามวัตถุประสงค์ต่างๆ ซึ่งมีฟังก์ชันที่เกี่ยวข้องคือ
- 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
ผลลัพธ์ที่ได้คือ
source | index_begin | result | |
---|---|---|---|
my-word-test-now | 9 | test |
ในตัวอย่างเราใช้คำสั่ง instr() ใส่ใน substr() ตรงตำแหน่ง index begin เพราะเราใช้ผลลัพธ์ของ instr() ได้เลย