Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เป็นไปได้อย่างไรใน MySQL ที่จะค้นหาตำแหน่งของการเกิดขึ้นครั้งแรกของสตริงย่อยในสตริง


ฟังก์ชัน MySQL LOCATE() ทำให้สามารถค้นหาตำแหน่งของสตริงย่อยที่เกิดขึ้นครั้งแรกในสตริงได้ ต่อไปนี้เป็นรูปแบบการใช้งาน -

ไวยากรณ์

LOCATE(Substring, String)

ในฟังก์ชันนี้ สตริงย่อยคือสตริงที่ต้องการค้นหาตำแหน่งการเกิดขึ้น และสตริงเป็นสตริงที่ต้องการค้นหาการเกิดขึ้นของสตริงย่อย

เราต้องส่งผ่านทั้งสตริง (เช่น สตริงย่อยที่จะค้นหาและสตริงที่ต้องการค้นหาสตริงย่อย) เป็นอาร์กิวเมนต์ของฟังก์ชัน LOCATE()

ตัวอย่าง

mysql> Select LOCATE('Good','RAM IS A GOOD BOY')As Result;
+--------+
| Result |
+--------+
|     10 |
+--------+
1 row in set (0.00 sec)

ในตัวอย่างข้างต้น ผลลัพธ์คือ 10 เนื่องจากการเกิดขึ้นครั้งแรกของสตริงย่อย 'ดี' เริ่มจากตำแหน่งที่ 10 ในสตริง 'RAM IS A GOOD BOY'

อย่างไรก็ตาม เรายังสามารถจัดการจุดเริ่มต้นของการค้นหาโดยใช้อาร์กิวเมนต์อื่นที่แสดงถึงตำแหน่ง ไวยากรณ์ของ LOCATE() พร้อมอาร์กิวเมนต์ตำแหน่งจะเป็นดังนี้ -

LOCATE(Substring, String, position)

ตัวอย่าง

mysql> Select LOCATE('Good','Good, RAM IS A GOOD BOY')As Result;
+--------+
| Result |
+--------+
|      1 |
+--------+
1 row in set (0.00 sec)

mysql> Select LOCATE('Good','Good, RAM IS A GOOD BOY',5)As Result;
+--------+
| Result |
+--------+
|     16 |
+--------+
1 row in set (0.00 sec)

จากชุดผลลัพธ์ข้างต้น เราจะเห็นความแตกต่างระหว่างการใช้อาร์กิวเมนต์ตำแหน่ง หากเราไม่ใช้มัน การค้นหาโดยค่าเริ่มต้นจะเริ่มต้นจากตำแหน่งที่ 1 และเมื่อเราระบุ '5' เป็นอาร์กิวเมนต์ตำแหน่งในตัวอย่างของเรา การค้นหาจะเริ่มต้นจากตำแหน่งที่ 5