ไวยากรณ์ดึงตัวอักษรก่อน 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;