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

การตรวจสอบว่าคอลัมน์มีสตริงเฉพาะอยู่หรือไม่ใน MySQL

เพื่อตรวจสอบว่าคอลัมน์ใดคอลัมน์หนึ่งมีสตริงเฉพาะอยู่ภายใน ใช้ CONCAT() ร่วมกับ LIKE

สร้างตารางตัวอย่าง

mysql> create table DemoTable ( 
    Name varchar(40) ); 
Query OK, 0 rows affected (0.56 sec)

เพิ่มข้อมูลตัวอย่าง

mysql> insert into DemoTable values('John'); Query OK, 1 row affected (0.33 sec)
mysql> insert into DemoTable values('Adam'); Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('Bob'); Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values('Johnson'); Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('David'); Query OK, 1 row affected (0.12 sec)

แสดงข้อมูลทั้งหมด

mysql> select *from DemoTable;
+---------+
| Name    |
+---------+
| John    |
| Adam    |
| Bob     |
| Johnson |
| David   |
+---------+
5 rows in set (0.00 sec)

คิวรี่ค้นหาชื่อที่มี "Joh" อยู่ภายใน

mysql> select *from DemoTable where Name like "%Joh%" OR "Joh" LIKE CONCAT("%", Name, "%");

ผลลัพธ์:

+---------+
| Name    |
+---------+
| John    |
| Johnson |
+---------+
2 rows in set (0.00 sec)

คำอธิบายเงื่อนไข

  • Name LIKE '%Joh%' - ค้นหา "Joh" อยู่ใน Name (ปกติ)
  • "Joh" LIKE CONCAT('%', Name, '%') - ค้นหา Name อยู่ใน "Joh" (กลับทิศทาง)
  • เงื่อนไขที่ 2 จะ match กรณี Name = 'Jo' หรือ 'h' (substring ของ Joh)

กรณีใช้งานจริง

มักใช้แค่เงื่อนไขแรกพอ:

SELECT * FROM DemoTable WHERE Name LIKE '%Joh%';

เพิ่มประสิทธิภาพด้วย Full-Text Search

สำหรับข้อความยาวหรือข้อมูลมาก ควรใช้:

ALTER TABLE DemoTable ADD FULLTEXT(Name);
SELECT * FROM DemoTable WHERE MATCH(Name) AGAINST('Joh');