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

ตัดข้อความพร้อมเครื่องหมาย ellipsis ใน MySQL


สามารถตัดข้อความพร้อมเพิ่มเครื่องหมาย ellipsis ได้โดยใช้ฟังก์ชัน LENGTH() ร่วมกับคำสั่ง CASE หากความยาวเกิน 7 ตัวอักษร ให้ตัดข้อความและต่อตัวเลขไว้ท้าย มิฉะนั้นให้แสดงค่าเดิม

ตัวอย่างการใช้งาน

สร้างตารางทดสอบ:

mysql> create table TruncateText ( Id int NOT NULL AUTO_INCREMENT, Number longtext, PRIMARY KEY(Id) ); Query OK, 0 rows affected (0.66 sec)

เพิ่มข้อมูลตัวเลขความยาวต่างกัน:

mysql> insert into TruncateText(Number) values('64575868667687'); Query OK, 1 row affected (0.11 sec)
mysql> insert into TruncateText(Number) values('7654332'); Query OK, 1 row affected (0.17 sec)
mysql> insert into TruncateText(Number) values('25434656'); Query OK, 1 row affected (0.19 sec)
mysql> insert into TruncateText(Number) values('6457586'); Query OK, 1 row affected (0.17 sec)
mysql> insert into TruncateText(Number) values('958567686868675757574'); Query OK, 1 row affected (0.13 sec)
mysql> insert into TruncateText(Number) values('374785868968787'); Query OK, 1 row affected (0.21 sec)
mysql> insert into TruncateText(Number) values('58969678685858585858585858585'); Query OK, 1 row affected (0.14 sec)

แสดงข้อมูลทั้งหมด:

mysql> select *from TruncateText;

ผลลัพธ์:

+----+-------------------------------+ | Id | Number                        | +----+-------------------------------+ | 1  | 64575868667687                | | 2  | 7654332                       | | 3  | 25434656                      | | 4  | 6457586                       | | 5  | 958567686868675757574         | | 6  | 374785868968787               | | 7  | 58969678685858585858585858585 | +----+-------------------------------+ 7 rows in set (0.00 sec)

คำสั่ง SQL สำหรับตัดข้อความและต่อตัวเลข 99999999 เมื่อความยาวเกิน 7:

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

ผลลัพธ์:

+----+-------------------------------+-----------------+ | Id | Number                        | AddNumber       | +----+-------------------------------+-----------------+ | 1  | 64575868667687                | 645758699999999 | | 2  | 7654332                       | 7654332         | | 3  | 25434656                      | 254346599999999 | | 4  | 6457586                       | 6457586         | | 5  | 958567686868675757574         | 958567699999999 | | 6  | 374785868968787               | 374785899999999 | | 7  | 58969678685858585858585858585 | 589696799999999 | +----+-------------------------------+-----------------+ 7 rows in set (0.00 sec)

สังเกตว่าตัวเลขที่ความยาวเกิน 7 จะถูกตัดทิ้งและต่อ 99999999 ไว้หลังตัวที่ 7