Khi bạn làm việc với tên, địa chỉ, email hoặc bất kỳ loại text nào — gần như lúc nào cũng cần làm một trong hai việc sau:
- Lấy một phần của chuỗi
- Kiểm tra độ dài
- Xoá khoảng trắng thừa
- Tìm/thay thế đoạn text
- Định dạng lại kết quả
Ví dụ, bạn cần:
- Chỉ hiển thị họ từ họ tên đầy đủ.
- Tìm sinh viên có họ bắt đầu bằng “P”.
- Thay tất cả khoảng trắng thành dấu gạch dưới.
- Hiển thị họ với chữ cái đầu viết hoa.
Tất cả mấy việc này đều dễ làm với các hàm chuỗi của PostgreSQL.
LENGTH() — độ dài chuỗi
Hàm LENGTH() trả về số ký tự trong chuỗi.
Cú pháp:
LENGTH(string)
Ví dụ:
SELECT name, LENGTH(name) AS name_length
FROM students;
| name | name_length |
|---|---|
| Art | 3 |
| Song | 4 |
| Pal | 3 |
Rất hữu ích để kiểm tra độ dài họ tên, mật khẩu và các text khác.
SUBSTRING() — lấy một phần chuỗi
Cho phép lấy ra một đoạn con từ chuỗi — ví dụ, 3 ký tự đầu của họ hoặc domain từ email.
Cú pháp:
SUBSTRING(string FROM start FOR length)
start— vị trí ký tự đầu tiên (đếm từ 1)length— số ký tự muốn lấy
Ví dụ 1: 3 ký tự đầu của họ
SELECT last_name, SUBSTRING(last_name FROM 1 FOR 3) AS prefix
FROM students;
| last_name | prefix |
|---|---|
| Song | Son |
| Pal | Pal |
Ví dụ 2: domain của email
SELECT email, SUBSTRING(email FROM POSITION('@' IN email) + 1) AS domain
FROM students;
| domain | |
|---|---|
| otto@example.com | example.com |
| maria@gmail.com | gmail.com |
TRIM() — xoá khoảng trắng thừa
Xoá khoảng trắng (và các ký tự khác) ở đầu và/hoặc cuối chuỗi.
Cú pháp:
TRIM([LEADING | TRAILING | BOTH] chars FROM string)
Nhưng thường thì chỉ dùng đơn giản như này:
TRIM(string)
Ví dụ:
SELECT '[' || TRIM(' Art ') || ']' AS cleaned;
| cleaned |
|---|
| [Art] |
Rất quan trọng nếu người dùng nhập dữ liệu thủ công (ví dụ, có khoảng trắng ở đầu).
POSITION() — tìm vị trí chuỗi con
Trả về vị trí bắt đầu của chuỗi con.
Cú pháp:
POSITION(substring IN string)
Ví dụ:
SELECT email, POSITION('@' IN email) AS at_position
FROM students;
| at_position | |
|---|---|
| otto@example.com | 5 |
| anna.pal@gmail.com | 9 |
Có thể dùng cùng với SUBSTRING() để lấy một phần chuỗi.
REPLACE() — thay thế chuỗi con
Thay tất cả các lần xuất hiện của một chuỗi con bằng chuỗi khác.
Cú pháp:
REPLACE(string, from_substring, to_substring)
Ví dụ: thay khoảng trắng bằng dấu gạch dưới
SELECT name, REPLACE(name, ' ', '_') AS fixed_name
FROM students;
| name | fixed_name |
|---|---|
| Otto Art | Otto_Art |
| Maria Chi | Maria_Chi |
INITCAP() — chữ cái đầu viết hoa
Chuyển chuỗi sao cho chữ cái đầu của mỗi từ viết hoa, còn lại là chữ thường.
Cú pháp:
INITCAP(string)
Ví dụ:
SELECT INITCAP('anna pal') AS full_name;
| full_name |
|---|
| Anna Pal |
Rất tiện để chuẩn hoá họ tên.
GO TO FULL VERSION