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

จะค้นหาบันทึกเฉพาะจากรายการค่าด้วยอัฒภาคใน MySQL ได้อย่างไร


สำหรับสิ่งนี้ คุณสามารถใช้ FIND_IN_SET() ให้เราสร้างตารางก่อน -

mysql> สร้างตาราง DemoTable ( Id int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, ค่า varchar(100)); ตกลง ตกลง 0 แถวได้รับผลกระทบ (2.49 วินาที)

แทรกระเบียนบางส่วนในตารางโดยใช้คำสั่ง insert -

mysql> แทรกลงในค่า DemoTable(Value)('100;200;300');Query OK, 1 แถวได้รับผลกระทบ (0.42 วินาที)mysql> แทรกลงในค่า DemoTable(Value)('1;300;400');แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.58 วินาที)mysql> แทรกลงใน DemoTable(Value) ค่า ('6;7;8;9;10');แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.29 วินาที)mysql> แทรกลงใน DemoTable ( Value) values('1;2;3;4;5');Query OK, 1 แถวได้รับผลกระทบ (9.36 วินาที)mysql> แทรกลงใน DemoTable(Value) values('3;8;9;10');Query OK , ได้รับผลกระทบ 1 แถว (0.46 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select -

mysql> เลือก *จาก DemoTable;

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+----+-------------+| รหัส | ความคุ้มค่า | +----+-------------+| 1 | 100;200;300 || 2 | 1;300;400 || 3 | 6;7;8;9;10 || 4 | 1;2;3;4;5 || 5 | 3;8;9;10 | +----+-------------+5 แถวในชุด (0.00 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อค้นหาบันทึกเฉพาะจากรายการค่าที่มีเครื่องหมายอัฒภาค -

mysql> เลือก *จาก DemoTable โดยที่ find_in_set(8, replace(Value, ';', ','))> 0;

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+----+-----------+| รหัส | ความคุ้มค่า |+----+-----------+| 3 | 6;7;8;9;10 || 5 | 3;8;9;10 |+----+------------+2 แถวในชุด (0.00 วินาที)