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

แยกส่วนของ URL ใน MySQL ด้วย SUBSTRING_INDEX()

เมื่อต้องการแยกส่วนเฉพาะของ URL เช่น ดึงชื่อไฟล์สุดท้าย โดเมน หรือ Path สามารถใช้ฟังก์ชัน SUBSTRING_INDEX() ซึ่งออกแบบมาสำหรับแยกสตริงด้วยตัวคั่น (Delimiter)

สร้างตารางและข้อมูล URL

mysql> create table DemoTable (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    URL text
);
mysql> insert into DemoTable(URL) values('https:\\www.example.com\\homepage');
mysql> insert into DemoTable(URL) values('https:\\www.onlinetest.com\\welcome\\indexpage');

ดึงเฉพาะส่วนสุดท้าย (หลัง \ สุดท้าย)

mysql> select substring_index(URL, '\\', -1) from DemoTable;

ผลลัพธ์

+------------------------------+
| substring_index(URL,'\\',-1) |
+------------------------------+
| homepage                     |
| indexpage                    |
+------------------------------+

รูปแบบ SUBSTRING_INDEX()

SUBSTRING_INDEX(สตริง, ตัวคั่น, จำนวน)
  • จำนวน > 0 - นับจากซ้ายไปขวา (คืนส่วนก่อนตัวคั่นครั้งที่ N)
  • จำนวน < 0 - นับจากขวาไปซ้าย (คืนส่วนหลังตัวคั่นครั้งที่ N จากท้าย)
  • จำนวน = 0 - คืนค่าว่าง

ตัวอย่างการใช้งานเพิ่มเติม

URLคำสั่งผลลัพธ์คำอธิบาย
https://example.com/path/file.htmlSUBSTRING_INDEX(url, '/', -1)file.htmlไฟล์สุดท้าย
https://example.com/path/file.htmlSUBSTRING_INDEX(url, '/', 3)https://example.comโดเมน (protocol + domain)
https://example.com/path/file.htmlSUBSTRING_INDEX(SUBSTRING_INDEX(url, '/', 3), '/', -1)example.comโดเมนอย่างเดียว
a,b,c,d,eSUBSTRING_INDEX(str, ',', 2)a,b2 ค่าแรก
a,b,c,d,eSUBSTRING_INDEX(str, ',', -2)d,e2 ค่าสุดท้าย

หมายเหตุ

  • MySQL จะเก็บ backslash (\\) เป็น escape character ต้องเขียน \\\\ ในคำสั่ง
  • สำหรับ URL จริง ใช้ forward slash (/) เป็นตัวคั่นมาตรฐาน
  • MySQL 8.0+ มีฟังก์ชัน JSON_EXTRACT() สำหรับข้อมูล JSON ที่ยืดหยุ่นกว่า