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

MySQL ตัดทอนข้อความด้วยจุดไข่ปลา?


คุณสามารถตัดข้อความด้วยจุดไข่ปลาโดยใช้ LENGTH() ด้วยคำสั่ง CASE หากความยาวของคุณมากกว่า 7 ให้ตัดข้อความและเพิ่มตัวเลข มิฉะนั้น ให้พิมพ์ตัวเลขตามนั้น

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

mysql> สร้างตาราง TruncateText -> ( -> Id int NOT NULL AUTO_INCREMENT, -> Number longtext, -> PRIMARY KEY(Id) -> );Query OK, 0 แถวได้รับผลกระทบ (0.66 วินาที)

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

mysql> แทรกลงในค่า TruncateText(Number) ('64575868667687');Query OK, 1 แถวได้รับผลกระทบ (0.11 วินาที)mysql> แทรกลงในค่า TruncateText(Number) ('7654332'); Query OK, 1 แถวได้รับผลกระทบ ( 0.17 วินาที) mysql> แทรกลงในค่า TruncateText(Number) ('25434656'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.19 วินาที) mysql> แทรกลงในค่า TruncateText(Number) ('6457586'); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว ( 0.17 วินาที)mysql> แทรกลงในค่า TruncateText(Number) ('958567686867575757574'); สืบค้นตกลง 1 แถวได้รับผลกระทบ (0.13 วินาที)mysql> แทรกลงในค่า TruncateText(Number) ('374785868968787'); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว ( 0.21 วินาที) mysql> แทรกลงในค่า TruncateText(Number) ('5896678685858585858585858585') แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.14 วินาที)

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

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

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

<ก่อนหน้า>+----+------------------------------+| รหัส | เบอร์ |+----+-------------------------------------+| 1 | 64575868667687 || 2 | 7654332 || 3 | 25434656 || 4 | 6457586 || 5 | 958567686868675757574 || 6 | 374785868968787 || 7 | 58969678685858585858585858585 |+----+-------------------------------------+7 แถวในชุด (0.00 วินาที)

ในผลลัพธ์ตัวอย่างด้านบน เรามีตัวเลขบางตัวที่มีความยาวมากกว่า 7 หากความยาวมากกว่า 7 เราต้องต่อท้ายตัวเลขหลังหลักที่ 7 หากความยาวเท่ากับ 7 หรือเท่ากับ 7 ก็ไม่จำเป็นต้องใส่ตัวเลขต่อท้าย

แบบสอบถามมีดังนี้:

mysql> SELECT *, CASE WHEN LENGTH(Number)> 7 -> แล้ว CONCAT(SUBSTRING(Number, 1, 7), '99999999') -> ELSE Number END AS AddNumber -> FROM TruncateText;

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

<ก่อนหน้า>+----+------------------------------+--------- --------+| รหัส | จำนวน | เพิ่มหมายเลข |+----+-------------------------------------+---------- --------+| 1 | 64575868667687 | 645758699999999 || 2 | 7654332 | 7654332 || 3 | 25434656 | 254346599999999 || 4 | 6457586 | 6457586 || 5 | 958567686868675757574 | 958567699999999 || 6 | 374785868968787 | 374785899999999 || 7 | 589696786858585858585858585 | 589696799999999 |+-----------+----------------------------------------------- --------+7 แถวในชุด (0.00 วินาที)

ดูตัวอย่างผลลัพธ์ด้านบน หากตัวเลขมากกว่า 7 แสดงว่าเราได้ตัดค่าทั้งหมดออกจากตัวเลขและเพิ่มตัวเลข "99999999" หลังหลักที่ 7