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

ดึงข้อความก่อนเครื่องหมาย Hyphen ใน MySQL ด้วย SUBSTRING_INDEX

การเตรียมข้อมูล

mysql> CREATE TABLE DemoTable1857 (
    Name VARCHAR(20)
);

mysql> INSERT INTO DemoTable1857 VALUES('John-Smith');
mysql> INSERT INTO DemoTable1857 VALUES('Brown-Chris');
mysql> INSERT INTO DemoTable1857 VALUES('David-Carol-Miller');

ใช้ SUBSTRING_INDEX ดึงส่วนก่อน Hyphen แรก

mysql> SELECT SUBSTRING_INDEX(Name, '-', 1) AS Name FROM DemoTable1857;

ผลลัพธ์:

+-------+
| Name  |
+-------+
| John  |
| Brown |
| David |
+-------+

ไวยากรณ์ SUBSTRING_INDEX

SUBSTRING_INDEX(str, delim, count)
  • str: สตริงต้นทาง
  • delim: ตัวคั่น (Delimiter)
  • count: จำนวนตัวคั่น
    • บวก: นับจากซ้ายไปขวา (ก่อนตัวคั่นที่ N)
    • ลบ: นับจากขวาไปซ้าย (หลังตัวคั่นที่ N)

ตัวอย่างเพิ่มเติม

-- สตริง: 'a-b-c-d'
SUBSTRING_INDEX(str, '-', 1)   -- 'a'      (ก่อน - ตัวที่ 1)
SUBSTRING_INDEX(str, '-', 2)   -- 'a-b'    (ก่อน - ตัวที่ 2)
SUBSTRING_INDEX(str, '-', -1)  -- 'd'      (หลัง - ตัวสุดท้าย)
SUBSTRING_INDEX(str, '-', -2)  -- 'c-d'    (หลัง - ตัวที่ 2 จากท้าย)

กรณีการใช้งานจริง

  • แยก First Name / Last Name จาก Full Name
  • แยก Domain จาก Email: SUBSTRING_INDEX(email, '@', -1)
  • แยกไฟล์นามสกุล: SUBSTRING_INDEX(filename, '.', -1)
  • Parsing Log/Path: SUBSTRING_INDEX(path, '/', -1) ได้ชื่อไฟล์