ฟังก์ชัน MySQL INSTR()
การใช้ฟังก์ชัน instr() เราสามารถจัดเตรียมสตริงและสตริงย่อยได้ ฟังก์ชันจะพิจารณาว่ามีสตริงย่อยอยู่ในสตริงต้นทางหรือไม่ ถ้ามีสตริงย่อย ฟังก์ชันจะคืนตำแหน่งของการเกิดขึ้นครั้งแรกของสตริงย่อยในสตริงต้นทาง
ถ้าสตริงย่อยไม่มีอยู่ในสตริงต้นทาง ฟังก์ชันจะส่งกลับ 0
ต่อไปนี้จะสาธิตไวยากรณ์ของฟังก์ชัน instr():
INSTR(src_string, sub_string);
ฟังก์ชันยอมรับสองพารามิเตอร์หลัก:
- src_string หมายถึงสตริงต้นฉบับที่คุณต้องการค้นหา
- sub_string กำหนดสตริงย่อยที่คุณกำลังค้นหา
โปรดทราบว่าฟังก์ชัน instr() นั้นไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ ดังนั้น ฟังก์ชันจะค้นหาเฉพาะรูปแบบการจับคู่โดยไม่คำนึงถึงตัวพิมพ์ใหญ่
หากต้องการค้นหาตามตัวพิมพ์เล็กและใหญ่ คุณสามารถใช้เครื่องมืออื่นๆ เช่น ตัวดำเนินการไบนารี
ตัวอย่างการใช้งานฟังก์ชั่น
ตัวอย่างต่อไปนี้แสดงให้เห็นว่าเราสามารถใช้ฟังก์ชัน instr() เพื่อค้นหาสตริงย่อยที่ต้องการได้อย่างไร
เลือก INSTR('MySQL เป็นเครื่องมือฐานข้อมูลที่ยอดเยี่ยม', 'ฐานข้อมูล') เป็น pos;
ตัวอย่างด้านบนจะส่งคืนตำแหน่งเริ่มต้นของสตริง 'ฐานข้อมูล' จากสตริงต้นทาง ในกรณีนี้ ตำแหน่งของสตริงฐานข้อมูลคือ 21 ตามที่แสดงในเอาต์พุตด้านล่าง:
ตำแหน่ง|---+
21|
ตัวอย่างที่ 2
เราสามารถใช้ฟังก์ชันตัวล่าง () หรือตัวบนเพื่อแปลงสตริงเป็นตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ สิ่งนี้สามารถช่วยให้เราเอาชนะธรรมชาติที่ไวต่อตัวพิมพ์เล็กและใหญ่ของฟังก์ชันได้
ตัวอย่าง:
เลือก INSTR(ล่าง('MySQL เป็นเครื่องมือฐานข้อมูลที่ยอดเยี่ยม'), ล่าง('ฐานข้อมูล')) เป็น pos;ผลลัพธ์:
ตำแหน่ง|
---+
21|
ซึ่งจะส่งคืนค่าที่คล้ายกับตัวอย่างแรก เนื่องจากสตริงต้นฉบับและสตริงย่อยจะถูกแปลงเป็นตัวพิมพ์เล็กก่อนดำเนินการค้นหา
ตัวอย่างที่ 3
เรายังสามารถใช้ฟังก์ชัน instr() กับคอลัมน์ของตารางได้ ดังที่แสดงในรูปแบบไวยากรณ์ด้านล่าง
SELECT INSTR(ชื่อคอลัมน์, 'สตริงย่อย')จาก table_name;
ตัวอย่าง:
สร้างตารางบล็อก (id INT ไม่เป็น NULL AUTO_INCREMENT คีย์หลัก
ชื่อเรื่อง VARCHAR(255) ไม่เป็นโมฆะ
ข้อความเนื้อหาไม่เป็นโมฆะ
date_posted วันที่ไม่เป็นโมฆะ
ผู้เขียน VARCHAR(255) ไม่เป็นโมฆะ
);
ใส่ข้อมูลบางส่วน:
INSERT INTO บล็อก (ชื่อ, เนื้อหา, date_posted, ผู้แต่ง)
VALUES ('บล็อกโพสต์แรกของฉัน', 'นี่คือเนื้อหาของบล็อกโพสต์แรกของฉัน', '2022-12-09', 'Jane Doe');
INSERT INTO บล็อก (ชื่อ, เนื้อหา, date_posted, ผู้แต่ง)
ค่า ('บล็อกโพสต์ที่สองของฉัน', 'นี่คือเนื้อหาของโพสต์บล็อกที่สองของฉัน', '2022-12-10', 'เจน โด');
INSERT INTO บล็อก (ชื่อ, เนื้อหา, date_posted, ผู้แต่ง)
ค่า ('บล็อกโพสต์ที่สามของฉัน', 'นี่คือเนื้อหาของบล็อกโพสต์ที่สามของฉัน', '2022-12-11', 'เจน โด');
เลือก * จากบล็อก;
ตารางผลลัพธ์:
เราสามารถใช้ฟังก์ชัน instr() เพื่อหาตำแหน่งของ substring 'blog' ในคอลัมน์เนื้อหาได้ดังรูป
เลือกชื่อ, instr(เนื้อหา, 'โพสต์') จากบล็อก;ผลลัพธ์:
บทสรุป
ในบทช่วยสอนนี้ คุณได้เรียนรู้วิธีใช้ฟังก์ชัน INSTR() ใน MySQL เพื่อค้นหาตำแหน่งของสตริงย่อยภายในสตริง ฟังก์ชันนี้คำนึงถึงขนาดตัวพิมพ์ ดังนั้น คุณอาจต้องใช้ฟังก์ชัน เช่น ล่างและบน เพื่อแปลงสตริงการค้นหาเป็นกรณีที่คุณต้องการ