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

เก็บแค่ 2 ตัวอักษรแรกของคอลัมน์ ลบส่วนที่เหลือด้วย SUBSTRING ใน MySQL

การตัดสตริงเก็บเฉพาะ N ตัวแรกด้วย SUBSTRING() และ UPDATE

ใช้ SUBSTRING(str, start, length) หรือ SUBSTR() เพื่อดึงส่วนของสตริง แล้ว UPDATE กลับเข้าไปในคอลัมน์เดิม

Syntax

UPDATE table_name SET column_name = SUBSTRING(column_name, 1, 2);

ตัวอย่าง: เก็บแค่ 2 ตัวอักษรแรกของชื่อวิชา

สร้างตารางและเพิ่มข้อมูล:

mysql> CREATE TABLE DemoTable743 (SubjectName VARCHAR(100));
Query OK, 0 rows affected (0.54 sec)

mysql> INSERT INTO DemoTable743 VALUES 
    ('MySQL'), ('Java'), ('MongoDB'), ('Python'), ('Data Structure'), ('Algorithm');
Query OK, 6 rows affected

ข้อมูลต้นฉบับ:

mysql> SELECT * FROM DemoTable743;
+----------------+
| SubjectName    |
+----------------+
| MySQL          |
| Java           |
| MongoDB        |
| Python         |
| Data Structure |
| Algorithm      |
+----------------+
6 rows in set (0.00 sec)

อัปเดตเก็บแค่ 2 ตัวแรก:

mysql> UPDATE DemoTable743 SET SubjectName = SUBSTRING(SubjectName, 1, 2);
Query OK, 6 rows affected (0.12 sec)

ผลลัพธ์:

mysql> SELECT * FROM DemoTable743;
+-------------+
| SubjectName |
+-------------+
| My          |
| Ja          |
| Mo          |
| Py          |
| Da          |
| Al          |
+-------------+
6 rows in set (0.00 sec)

ฟังก์ชันตัดสตริงใน MySQL

ข้อควรระวัง

  • UPDATE นี้เป็น Permanent** - ข้อมูลเดิมหายไป 永久
  • ควร Backup หรือสร้างคอลัมน์ใหม่ก่อน: ALTER TABLE ... ADD short_name VARCHAR(2); UPDATE ... SET short_name = SUBSTRING(name,1,2);
  • CHAR_LENGTH สำหรับนับตัวอักษร Unicode, LENGTH สำหรับ Byte
  • Position เริ่มที่ 1 (ไม่ใช่ 0)
  • หาก Length เกินความยาวสตริง จะคืนจนจบสตริง (ไม่ Error)

SELECT แบบไม่เปลี่ยนข้อมูล (สำหรับแสดงผล)

SELECT SubjectName, SUBSTRING(SubjectName, 1, 2) AS ShortName FROM DemoTable743;
ฟังก์ชันSyntaxคำอธิบาย
SUBSTRING / SUBSTRSUBSTRING(str, pos, len)ดึงจากตำแหน่ง pos ความยาว len (1-based)
LEFTLEFT(str, len)ดึง len ตัวจากซ้าย
RIGHTRIGHT(str, len)ดึง len ตัวจากขวา
MIDMID(str, pos, len)Alias ของ SUBSTRING
SUBSTRING_INDEXSUBSTRING_INDEX(str, delim, count)ดึงก่อน/หลัง Delimiter ครั้งที่ count