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

ฟังก์ชันเทียบ stripos() ของ PHP ใน MySQL คือ INSTR()

ใช้ INSTR() หาตำแหน่ง Substring แบบ Case-Insensitive

INSTR(str, substr) คืนตำแหน่ง (1-based) ของ substr แรกที่พบใน str คล้าย stripos() ของ PHP (แต่ INSTR เป็น Case-Insensitive ตาม Collation ของคอลัมน์)

ตัวอย่างสร้างตารางและข้อมูล

CREATE TABLE DemoTable (Title TEXT);
INSERT INTO DemoTable VALUES 
('MySQL is my favourite subject'), 
('MongoDB is not my favourite subject');

ข้อมูลในตาราง

+-------------------------------------+
| Title                                 |
+-------------------------------------+
| MySQL is my favourite subject         |
| MongoDB is not my favourite subject   |
+-------------------------------------+

คำสั่งหาตำแหน่งคำว่า 'favourite'

SELECT INSTR(Title, 'favourite') AS Position FROM DemoTable;

ผลลัพธ์

+----------+
| Position |
+----------+
| 13       |
| 19       |
+----------+

คำอธิบาย: ตำแหน่งเริ่มต้นที่ 1 (ไม่ใช่ 0) คืนค่า 0 หากไม่พบ

ฟังก์ชันค้นหาสตริงอื่นๆ ใน MySQL:

Case-Sensitive Search: ใช้ INSTR(Title, 'favourite') COLLATE utf8mb4_bin หรือ LOCATE('favourite', Title) COLLATE utf8mb4_bin

ฟังก์ชันคืนค่าCase-Sensitiveหมายเหตุ
INSTR(str, substr)Position (1-based)ขึ้นกับ Collationไมารองรับ Offset
LOCATE(substr, str, [pos])Position (1-based)ขึ้นกับ Collationรองรับ Offset เริ่มค้นหา
POSITION(substr IN str)Position (1-based)ขึ้นกับ CollationSQL Standard
FIND_IN_SET(str, strlist)Index ใน CSV listCase-Insensitiveสำหรับ CSV
REGEXP / RLIKEBoolean (0/1)ขึ้นกับ CollationRegular Expression