Đôi khi chỉ cần một phần giá trị chuỗi trong dữ liệu để hiển thị. Có hàm chuỗi tên SUBSTR(). Hàm tương đương SUBSTRING(). Bài viết này trình bày dùng hàm substring trong SQL.
Chuẩn bị
SQL Fiddle dùng trong bài. 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');
Dùng SUBSTR() lấy phần tên cột name. Cú pháp:
SUBSTR(ten_cot, vi_tri_bat_dau, so_ky_tu);
3 tham số: cột/chuỗi muốn trích substring, vị trí bắt đầu (1-based index, tính từ 1 không phải 0), độ dài ký tự. Áp dụng cột name:
SELECT name, SUBSTR(name, 1, 4) AS NAME_SUBSTRING, age, gender FROM names;
Kết quả:
| 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 |
Tham số thứ 3 có thể bỏ qua:
SELECT name, SUBSTR(name, 4) AS NAME_SUBSTRING, age, gender FROM names;
Kết quả lấy từ ký tự thứ 4 đến hết chuỗi.
Cũng dùng giá trị âm cho vị trí (đếm từ cuối chuỗi):
SELECT name, SUBSTR(name, -4) AS NAME_SUBSTRING, age, gender FROM names;
Kết quả lấy 4 ký tự cuối chuỗi.
Cú pháp có thể khác nhẹ tùy database. Khái niệm chung giống nhau. Nhớ index vị trí bắt đầu từ 1 (không phải 0) để xây query chính xác.