การรวมตัวแปรผู้ใช้กับ LIKE ด้วย CONCAT()
ใน MySQL คุณสามารถใช้ตัวแปรผู้ใช้ (User Variables) ร่วมกับเงื่อนไข LIKE ได้โดยการต่อสตริงด้วยฟังก์ชัน CONCAT() รูปแบบคือ:
SET @variable_name = 'search_value';
SELECT column1, column2, ...
FROM your_table_name
WHERE your_column LIKE CONCAT('%', @variable_name, '%');
ตัวอย่างการใช้งานแบบสมบูรณ์
1. สร้างตารางผู้ใช้
CREATE TABLE UserVariableInLike (
id INT,
Name VARCHAR(100),
Age INT
);
2. เพิ่มข้อมูลตัวอย่าง
INSERT INTO UserVariableInLike VALUES
(101, 'John', 23),
(102, 'John Smith', 24),
(103, 'Carol Smith', 23),
(104, 'Johnson', 25),
(105, 'Adam Smith', 26);
3. ตั้งค่าตัวแปรและค้นหา
SET @searchName = 'John';
SELECT id, Name, Age
FROM UserVariableInLike
WHERE Name LIKE CONCAT('%', @searchName, '%');
ผลลัพธ์การค้นหา
| id | Name | Age |
|---|---|---|
| 101 | John | 23 |
| 102 | John Smith | 24 |
| 104 | Johnson | 25 |
ประโยชน์ของวิธีนี้
- ใช้ตัวแปรซ้ำได้หลายคิวรีโดยไม่ต้องพิมพ์ค่าซ้ำ
- เหมาะสำหรับ Stored Procedure หรือ Dynamic SQL
- ป้องกัน SQL Injection ได้ดีกว่าการต่อสตริงโดยตรง
- รองรับ wildcard ทั้งหน้าและหลัง (%...%)