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

MySQL Query เพื่อลบอักขระทั้งหมดหลังจากจุลภาคสุดท้ายในสตริง?


หากต้องการลบอักขระทั้งหมดหลังเครื่องหมายจุลภาคสุดท้ายในสตริง คุณสามารถใช้ SUBSTRING_INDEX()

หากคุณไม่ทราบตำแหน่งของเครื่องหมายจุลภาคสุดท้าย คุณจะต้องค้นหาเครื่องหมายจุลภาคสุดท้ายแบบไดนามิกโดยใช้ LENGTH()

ไวยากรณ์มีดังนี้ -

อัปเดต yourTableNameset yourColumnName =SUBSTRING_INDEX(yourColumnName, ',',LENGTH(yourColumnName) - LENGTH(REPLACE(yourColumnName, ',', '')));

เพื่อทำความเข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้ −

mysql> สร้างตาราง RemoveAllCharacters -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> FullInfo varchar(200), -> คีย์หลัก (Id) -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (1.83 วินาที) 

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

mysql> แทรกลงในค่า RemoveAllCharacters(FullInfo) ('John,Smith,23,98,4565886');Query OK, 1 แถวได้รับผลกระทบ (0.23 วินาที)mysql> แทรกลงในค่า RemoveAllCharacters(FullInfo) ('Carol,Taylor ,26,91');Query OK, 1 แถวได้รับผลกระทบ (0.28 วินาที)mysql> แทรกลงในค่า RemoveAllCharacters(FullInfo) ('David,Miller,21');Query OK, 1 แถวได้รับผลกระทบ (0.11 วินาที)mysql> แทรกเข้าไป ค่า RemoveAllCharacters(FullInfo) ('Robert,Jones,22,97');แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.09 วินาที)mysql> แทรกลงในค่า RemoveAllCharacters (FullInfo) ('Sam,Williams,27,88,456788,97877' );แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.13 วินาที)

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

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

ต่อไปนี้เป็นผลลัพธ์ -

<ก่อนหน้า>+----+---------------------------------+| รหัส | FullInfo |+---+---------------------------------+| 1 | จอห์น สมิธ 23,98,4565886 || 2 | แครอล,เทย์เลอร์,26,91 | | 3 | เดวิด มิลเลอร์ 21 || 4 | โรเบิร์ต โจนส์ 22,97 || 5 | แซม,วิลเลียมส์,27,88,456788,97877 |+----+-------------------------------- -+5 แถวในชุด (0.00 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อลบอักขระทั้งหมดหลังจากเครื่องหมายจุลภาคสุดท้ายในสตริง -

mysql> อัปเดต RemoveAllCharacters -> ตั้งค่า FullInfo =SUBSTRING_INDEX(FullInfo, ',', LENGTH(FullInfo) - LENGTH(REPLACE(FullInfo, ',', '')));Query OK, 5 แถวได้รับผลกระทบ (0.28 วินาที )แถวที่ตรงกัน:5 เปลี่ยน:5 คำเตือน:0

ตรวจสอบบันทึกทั้งหมดของตารางอีกครั้ง แบบสอบถามมีดังนี้ −

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

ต่อไปนี้เป็นผลลัพธ์ที่แสดงระเบียนโดยไม่มีอักขระหลังเครื่องหมายจุลภาคสุดท้าย:

<ก่อนหน้า>+----+---------------------------+| รหัส | FullInfo |+----+---------------------------+| 1 | จอห์น สมิธ 23,98 || 2 | แครอล,เทย์เลอร์,26 || 3 | เดวิด,มิลเลอร์ || 4 | โรเบิร์ต โจนส์ 22 || 5 | แซม,วิลเลียมส์,27,88,456788 |+----+---------------------------+5 แถวในชุด (0.00 วินาที)