การใช้ SUBSTRING และ LOCATE หาส่วนแรก
ใช้ LOCATE(' ', PostCode) หาตำแหน่ง Space แรก แล้ว SUBSTRING(PostCode, 1, pos - 1) ดึงข้อความก่อน Space
ตัวอย่าง
mysql> create table DemoTable858(PostCode varchar(100));
Query OK, 0 rows affected (0.56 sec)
mysql> insert into DemoTable858 values('US90 456');
mysql> insert into DemoTable858 values('UK1 EN789343');
mysql> insert into DemoTable858 values('ENG78884 736454654');
คำสั่งดึงส่วนแรก
mysql> select substring(PostCode, 1, locate(' ', PostCode) - 1) as GetFirstPart from DemoTable858;
ผลลัพธ์:
+--------------+
| GetFirstPart |
+--------------+
| US90 |
| UK1 |
| ENG78884 |
+--------------+
คำอธิบาย
LOCATE(' ', 'US90 456')= 5 (ตำแหน่ง Space)SUBSTRING('US90 456', 1, 5-1)=SUBSTRING(..., 1, 4)= 'US90'
วิธีอื่นๆ
-- ใช้ SUBSTRING_INDEX (ง่ายกว่า)
SELECT SUBSTRING_INDEX(PostCode, ' ', 1) FROM DemoTable858;
-- ใช้ LEFT + LOCATE
SELECT LEFT(PostCode, LOCATE(' ', PostCode) - 1) FROM DemoTable858;
⚠️ กรณีไม่มี Space
LOCATE คืน 0 -> SUBSTRING(..., 1, -1) คืน Empty String ควรเพิ่มเงื่อนไข:
SELECT CASE
WHEN LOCATE(' ', PostCode) > 0
THEN SUBSTRING(PostCode, 1, LOCATE(' ', PostCode) - 1)
ELSE PostCode
END FROM DemoTable858;
สรุป
ใช้ SUBSTRING_INDEX(PostCode, ' ', 1) วิธีง่ายที่สุด ดึงส่วนก่อน Delimiter ตัวแรก (รองรับกรณีไม่มี Delimiter ให้คืนทั้งสตริง)