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

ดึงส่วนเส้นทางไฟล์ (Path) โดยตัดชื่อไฟล์ออกใน MySQL ด้วย LEFT, SUBSTRING_INDEX, CHAR_LENGTH

การตัดสตริงเพื่อให้เหลือเฉพาะ Directory Path จาก Full File Path

เมื่อมีเส้นทางไฟล์เต็ม (Full Path) เช่น /MyFile/JavaProgram/Hello.java และต้องการเฉพาะส่วน Directory /MyFile/JavaProgram/ เราสามารถคำนวณความยาวแล้วตัดด้วย LEFT(), SUBSTRING_INDEX(), CHAR_LENGTH()

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

mysql> CREATE TABLE DemoTable (FileLocation TEXT);
Query OK, 0 rows affected (0.57 sec)

mysql> INSERT INTO DemoTable VALUES('/MyFile/JavaProgram/Hello.java');
mysql> INSERT INTO DemoTable VALUES('/C/AllPrograms/animation.gif');
mysql> INSERT INTO DemoTable VALUES('/E/FavFile/ChatProgram.java');

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

mysql> SELECT * FROM DemoTable;

ผลลัพธ์:

+--------------------------------+
| FileLocation                   |
+--------------------------------+
| /MyFile/JavaProgram/Hello.java |
| /C/AllPrograms/animation.gif   |
| /E/FavFile/ChatProgram.java    |
+--------------------------------+
3 rows in set (0.00 sec)

คำสั่งตัดเฉพาะ Path (ตัดชื่อไฟล์ออก)

mysql> SELECT LEFT(FileLocation,
    CHAR_LENGTH(FileLocation) - CHAR_LENGTH(SUBSTRING_INDEX(FileLocation, '/', -1)))
    FROM DemoTable;

ผลลัพธ์:

+------------------------------------------------------------------------------------------------+
| left(FileLocation,char_length(FileLocation)-char_length(substring_index(FileLocation,'/',-1))) |
+------------------------------------------------------------------------------------------------+
| /MyFile/JavaProgram/                                                                           |
| /C/AllPrograms/                                                                                |
| /E/FavFile/                                                                                    |
+------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)

คำอธิบาย

  • SUBSTRING_INDEX(FileLocation, '/', -1) : ดึง substring หลัง '/' ตัวสุดท้าย (คือชื่อไฟล์: Hello.java)
  • CHAR_LENGTH(...) : ความยาวของสตริงชื่อไฟล์
  • CHAR_LENGTH(FileLocation) - ... : ความยาวของ Path (ไม่รวมชื่อไฟล์)
  • LEFT(FileLocation, length) : ตัดตัวอักษรจากซ้ายตามความยาวที่คำนวณได้
  • วิธีนี้ทำงานได้แม้ Path จะมีความลึกไม่เท่ากัน