การตัดสตริงเพื่อให้เหลือเฉพาะ 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 จะมีความลึกไม่เท่ากัน