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

ดึงข้อความก่อน Space แรกใน MySQL ด้วย LEFT() และ LOCATE()


ไวยากรณ์ดึงตัวอักษรก่อน Space

ใช้ LEFT() ร่วมกับ LOCATE() เพื่อหาตำแหน่ง Space แรก:

SELECT LEFT(column_name, LOCATE(' ', column_name) - 1) AS first_part
FROM your_table;

ตัวอย่างการใช้งาน

สร้างตารางและข้อมูลชื่อ-นามสกุล

CREATE TABLE AllCharacterBeforeSpace (FirstNameAndLastName VARCHAR(200));
INSERT INTO AllCharacterBeforeSpace VALUES
('John Smith'), ('Carol Taylor'), ('Maria Garcia'), ('James Johnson');

คำสั่งดึงชื่อ (First Name)

SELECT LEFT(FirstNameAndLastName, LOCATE(' ', FirstNameAndLastName) - 1) AS FirstNameBeforeSpace
FROM AllCharacterBeforeSpace;

ผลลัพธ์

+----------------------+
| FirstNameBeforeSpace |
+----------------------+
| John                 |
| Carol                |
| Maria                |
| James                |
+----------------------+

กรณีไม่มี Space

หากคอลัมน์ไม่มี Space LOCATE() จะคืนค่า 0 ทำให้ LEFT(..., -1) คืนค่า Empty String ('')

SELECT LEFT('NoSpace', LOCATE(' ', 'NoSpace') - 1);  -- ผลลัพธ์: ''

แก้ไขกรณีไม่มี Space (คืนค่าทั้งสตริง)

SELECT 
    CASE 
        WHEN LOCATE(' ', column_name) = 0 THEN column_name
        ELSE LEFT(column_name, LOCATE(' ', column_name) - 1)
    END AS first_part
FROM your_table;

ดึงนามสกุล (หลัง Space สุดท้าย)

SELECT SUBSTRING_INDEX(FirstNameAndLastName, ' ', -1) AS LastName
FROM AllCharacterBeforeSpace;