MySQL ค้นหาข้อมูลจาก field ที่เก็บข้อมูลโดยมี comma คั่น ด้วย FIND_IN_SET
วันที่: 13 ก.พ. 2565 21:14 น.
คุณเคยเก็บข้อมูลใน database ใน field เดียวกันแต่ใช้ comma ขั้นไหม ? เช่น เก็บหมวดหมู่ หรือ tag ของบทความต่าง ๆ หรือ เช่นแบบนี้
+----+--------------------------------+
| id | name |
+----+--------------------------------+
| 1 | John,Carol,Sam,Larry,Bob,David |
| 2 | Maxwell,Chris,James |
| 3 | Robert,Ramit |
+----+--------------------------------+
จะเห็นว่าการที่จะค้นหา record ที่มีชื่อ James นั้น จะใช้ = หรือ LIKE ก็ไม่ได้แล้ว หรืออาจจะได้แต่ต้องเขียนค่อนข้างเยอะเลย แต่ในบทความนี้จะพาทำวิธีง่าย ๆ ด้วย function FIND_IN_SET ใน MySQL
วิธีเรียกใช้งานก็ทำได้ง่าย ๆ ด้วยคำสั่งดังนี้
SELECT * FROM ชื่อตาราง WHERE FIND_IN_SET('ข้อมูลที่ต้องการค้นหา',ชื่อฟิลด์ที่เก็บ) > 0;
มาทดลองกันเลยครับ
สร้างตาราง commaData โดยใช้คำสั่ง
create table commaData
-> (
-> id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> name varchar(200)
-> );
Query OK, 0 rows affected (0.041 sec)
จากนั้นใส่ค่าลงไปในตาราง ด้วยคำสั่งนี้
insert into commaData(Name) values('John,Carol,Sam,Larry,Bob,David');
Query OK, 1 row affected (0.008 sec)
MariaDB [test]> insert into commaData(Name) values('Maxwell,Chris,James');
Query OK, 1 row affected (0.001 sec)
MariaDB [test]> insert into commaData(Name) values('Robert,Ramit');
Query OK, 1 row affected (0.002 sec)
แล้วลองเรียกข้อมูลดู
select * from commaData;
+----+--------------------------------+
| id | name |
+----+--------------------------------+
| 1 | John,Carol,Sam,Larry,Bob,David |
| 2 | Maxwell,Chris,James |
| 3 | Robert,Ramit |
+----+--------------------------------+
3 rows in set (0.001 sec)
แล้วสุดท้ายลองใช้ function FIND_IN_SET ค้นหา โดยคำสั่งง่าย ๆ ดังนี้
SELECT * FROM commaData WHERE FIND_IN_SET('James',Name) > 0;
+----+---------------------+
| id | name |
+----+---------------------+
| 2 | Maxwell,Chris,James |
+----+---------------------+
1 row in set (0.002 sec)
ผลเป็นที่น่าพอใจครับ ลองนำไปใช้ดูนะครับ
เรื่องอื่น ๆ ที่เกี่ยวข้อง
การใช้งาน Angular ร่วมกับ Datatables เรียกใช้ข้อมูลจาก .NET Core แบบ Server-side
เมื่อวันที่: 18 ก.พ. 2565 09:48 น.
วิธีล้างข้อมูลจากตาราง MySQL ที่มี FK constraints
เมื่อวันที่: 7 ก.พ. 2565 22:43 น.
เริ่มต้นสร้าง RESTful API ด้วย Node.js ร่วมกับ Express
เมื่อวันที่: 6 เม.ย. 2565 22:57 น.
สร้าง RESTful API เบื้องต้นสำหรับ เพิ่ม/ลบ/แก้ไข ด้วย Node.js ร่วมกับ Express
เมื่อวันที่: 7 เม.ย. 2565 23:00 น.
ทำภาพสไลด์สวย ๆ ด้วย Card ร่วมกับ Swiperjs ใน Bootstrap 5 ล่าสุด
เมื่อวันที่: 9 ก.พ. 2566 13:37 น.
การใช้งาน Angular ร่วมกับ Datatables เรียกใช้ข้อมูลจาก PHP และ MySQL แบบ Server-side
เมื่อวันที่: 18 ก.พ. 2565 00:42 น.