บางครั้งเราต้องการแค่ส่วนหนึ่งของ String Value ใน Data เพื่อแสดง มี String Function เรียกว่า SUBSTR() มี Function เทียบเท่าอีกตัวคือ SUBSTRING() ในบทความนี้ เราจะครอบคลุมการใช้ Substring Function ใน SQL
Preparation: เตรียมข้อมูล
นี่คือ SQL Fiddle ที่ใช้ในบทความ Schema ดังนี้:
create table names ( id INT, name VARCHAR(50), age INT, gender VARCHAR(50) ); insert into names (id, name, age, gender) values (1, 'Bret Starkings', 55, 'M'); insert into names (id, name, age, gender) values (2, 'Bobbye Eyckel', 76, 'F'); insert into names (id, name, age, gender) values (3, 'Barbie Veschi', 50, 'F'); insert into names (id, name, age, gender) values (4, 'Electra Blazewicz', 47, 'F');
เราใช้ฟังก์ชัน SUBSTR() เพื่อดึงส่วนหนึ่งของ Column name Syntax ของฟังก์ชัน:
SUBSTR(column_name, position, num_letters);
ฟังก์ชันรับ 3 Parameters: Column หรือ String ที่ต้องการดึง Substring, Start Position แบบ One-based (Indexing เริ่มที่ 1 ไม่ใช่ 0), และ จำนวนตัวอักษร ถ้าเราทำบน Column name SQL Statement จะเป็น:
SELECT name, SUBSTR(name, 1, 4) AS NAME_SUBSTRING, age, gender FROM names;
โค้ดผลลัพธ์:
| name | NAME_SUBSTRING | age | gender |
| Bret Starkings | Bret | 55 | M |
| Bobbye Eyckel | Bobb | 76 | F |
| Barbie Veschi | Barb | 50 | F |
| Electra Blazewicz | Elec | 47 | F |
| Estrella Borleace | Estr | 57 | F |
Parameter ที่ 3 สามารถละได้หากต้องการ:
SELECT name, SUBSTR(name, 4) AS NAME_SUBSTRING, age, gender FROM names;
| name | NAME_SUBSTRING | age | gender |
| Bret Starkings | t Starkings | 55 | M |
| Bobbye Eyckel | bye Eyckel | 76 | F |
| Barbie Veschi | bie Veschi | 50 | F |
| Electra Blazewicz | ctra Blazewicz | 47 | F |
| Estrella Borleace | rella Borleace | 57 | F |
คุณยังสามารถใช้ค่าลบสำหรับ Position ได้:
SELECT name, SUBSTR(name, -4) AS NAME_SUBSTRING, age, gender FROM names;
| name | NAME_SUBSTRING | age | gender |
| Bret Starkings | ings | 55 | M |
| Bobbye Eyckel | ckel | 76 | F |
| Barbie Veschi | schi | 50 | F |
| Electra Blazewicz | wicz | 47 | F |
| Estrella Borleace | eace | 57 | F |
เช่นเดียวกับ SQL Functions อื่นๆ Syntax อาจต่างเล็กน้อยขึ้นอยู่กับ Database ที่ใช้ แต Concept หลักเหมือนกัน จำไว้ว่า Indexing เริ่มที่ 1 ไม่ใช่ 0 สำหรับ Parameter Position และคุณจะสร้าง Queries ได้ดี