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

SQL SUBSTR() Function: ฟังก์ชันตัดข้อความใน SQL

บางครั้งเราต้องการแค่ส่วนหนึ่งของ 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 ได้ดี

No