Vấn đề:
Bạn muốn trích xuất một chuỗi con từ văn bản trong một cột nhất định.
Ví dụ:
Cơ sở dữ liệu của chúng tôi có một bảng có tên web_address
với dữ liệu trong các cột id
và address
. Chúng tôi muốn xóa ‘www.
'Ở đầu và ‘.com
'Ở cuối mỗi address
.
id | địa chỉ|
---|---|
1 | www.example.com |
2 | www.google.com |
3 | www.learnsql.com |
Giải pháp 1:
Để xóa 4 ký tự đầu tiên:
SELECT SUBSTR(address, 5, LENGTH(address) -4) AS substring FROM web_address;
Để xóa 4 ký tự cuối cùng:
SELECT SUBSTR(address, 1, LENGTH(address) -4) AS substring FROM web_address;
Để xóa 4 ký tự đầu tiên và 4 ký tự cuối cùng:
SELECT SUBSTR(address, 5, LENGTH(address) -8) AS substring FROM web_address;
Giải pháp 2:
Để xóa 4 ký tự đầu tiên:
SELECT SUBSTRING(address, 5, LENGTH(address)) AS substring FROM web_address;
Để xóa 4 ký tự cuối cùng:
SELECT SUBSTRING(address, 1, LENGTH(address) -4) AS substring FROM web_address;
Để xóa 4 ký tự đầu tiên và 4 ký tự cuối cùng:
SELECT SUBSTRING(address, 5, LENGTH(address) -8) AS substring FROM web_address;
Giải pháp 3:
Để xóa tất cả các ký tự trước dấu ‘.’ Thứ hai từ bên phải:
SELECT SUBSTRING_INDEX(address, '.', -2) AS substring FROM web_address;
Để xóa tất cả các ký tự sau dấu ‘.’ Thứ hai từ bên trái:
SELECT SUBSTRING_INDEX(address, '.', 2) AS substring FROM web_address;
Để xóa tất cả các ký tự sau dấu ‘.’ Thứ hai từ bên trái, sau đó xóa tất cả các ký tự trước dấu ‘.’ Đầu tiên từ bên phải:
SELECT SUBSTRING_INDEX( SUBSTRING_INDEX(address, '.', 2), '.', -1 ) AS substring FROM web_address;
Kết quả là:
chuỗi con |
---|
ví dụ |
learningql |
Thảo luận:
Giải pháp đầu tiên và giải pháp thứ hai đều xóa một số ký tự được chỉ định khỏi văn bản bằng SUBSTR()
hoặc SUBSTRING()
hàm số. SUBSTR()
là từ đồng nghĩa với SUBSTRING()
. Cả hai đều yêu cầu chuỗi và vị trí bắt đầu làm đối số. Đối số cuối cùng, xác định số ký tự cần trích xuất, là tùy chọn. Nếu đối số cuối cùng bị bỏ qua, toàn bộ chuỗi (từ điểm bắt đầu) sẽ được trả về.
Trong giải pháp thứ ba, SUBSTRING_INDEX()
hàm xóa văn bản trước hoặc sau các ký tự được chỉ định. Nó yêu cầu các đối số là chuỗi, ký tự và bao nhiêu trường hợp của ký tự phải gặp ở nơi bắt đầu trích xuất văn bản.