Substring trong MySQL

Bởi Kiên Smart Data
0 Nhận xét
Substring trong SQL

Bạn cần tìm hiểu cách trích xuất chuỗi trong MySQL ? Đừng lo! Trong bài viết này, SmartData sẽ hướng dẫn các bạn làm điều đó.

Ví dụ 1:

Chúng ta có 1 bảng emails có chứa cột email.

email
jake99@gmail.com
tamarablack@zoho.com
notine@yahoo.fr
jessica1995@onet.pl

Vậy làm thế nào để lấy ra 7 kí tự đầu trong cột email ? Câu truy vấn của chúng ta như sau:

SELECT

  email,

  SUBSTRING(email, 1, 7) AS substring

FROM emails;

hoặc

SELECT

  email,

  SUBSTRING(email FROM FOR 7) AS substring

FROM emails;

Kết quả là:

emailsubstring
jake99@gmail.comjake99@
tamarablack@zoho.comtamarab
notine@yahoo.frnotine@
jessica1995@onet.pljessica

Thảo luận 1:

Trong câu truy vấn trên, chúng ta sử dụng hàm SUBSTRING(). Tham số đầu tiên của hàm này có thể là 1 chuỗi hoặc 1 tên cột, tham số thứ 2 là vị trí tương ứng của nơi bắt đầu trích xuất và tham số cuối cùng là độ dài hoặc số kí tự muốn trích xuất.

Lưu ý: Không giống như những ngôn ngữ lập trình khác, dãy số thứ tự của chuỗi bắt đầu từ 1. Điều này có nghĩa là kí tự đầu tiên phải nằm ở số 1, kí tự thứ 2 nằm ở số 2, etc.

SUBSTRING(email, 1, 7) sẽ trả về chuỗi được trích xuất từ các giá trị trong cột email, bắt đầu ở đầu chuỗi (ký tự đầu tiên) và kéo dài bảy ký tự. Trường hợp kế tiếp, SUBSTRING(email FROM 1 FOR 7), cũng cho ra kết quả tương tự. Tham số sau FROM là vị trí bắt đầu trích xuất và tham số sau FOR là độ dài hoặc số kí tự cần trích xuất.

Tham số thứ 3 trong hàm SUBSTRING là 1 tuỳ chọn. Nếu bạn bỏ qua nó, bạn sẽ nhận được chuỗi con bắt đầu tại vị trí thứ 2 được chỉ định và đi đến cuối chuỗi. SUBSTRING(email,1) sẽ trả về toàn bộ chuỗi, giống như SUBSTRING(email FROM 1).

Ví dụ 2:

Giả sử, bạn muốn tìm 1 chuỗi con có điểm bắt đầu từ kí tự ‘@’ trong cột email . Câu truy vấn sẽ như sau:

SELECT

  email,

  SUBSTRING(email ,POSITION('@' IN email)) AS substring

FROM emails;

hoặc:

SELECT

  email,

  SUBSTRING(email FROM POSITION('@' IN email)) AS substring

FROM emails;

Kết quả là:

emailsubstring
jake99@gmail.com@gmail.com
tamarablack@zoho.com@zoho.com
notine@yahoo.fr@yahoo.fr
jessica1995@onet.pl@onet.pl

Thảo luận 2:

Chúng ta vẫn dùng hàm SUBSTRING() như trên, nhưng ở lần này chúng ta cần tìm điểm xuất phát là 1 kí tự ‘@’ và nó không thể có 1 toạ độ cụ thể trong các chuỗi ở cột email. Vì vậy để định vị được vị trí của kí tự đó, ta dùng hàm POSITION(character IN column).

Nếu bạn muốn chuỗi con bắt đầu từ 1 kí và kết thục cũng tại 1 kí tự, trong trường hợp này ta sẽ lấy điểm bắt đầu tại ‘@’ và kết thúc tại ‘.’. Câu truy vấn sẽ như sau:

SELECT

  email,

  SUBSTRING(email, POSITION('@' IN email), POSITION('.' IN email) - POSITION('@' IN email)) AS substring

FROM emails;

hoặc:

SELECT

  email,

  SUBSTRING(email FROM POSITION('@' IN email) FOR POSITION('.' IN email) - POSITION('@' IN email)) AS substring

FROM emails;

Kết quả thu được là:

emailsubstring
jake99@gmail.com@gmail
tamarablack@zoho.com@zoho
notine@yahoo.fr@yahoo
jessica1995@onet.pl@onet

Phần POSITION(‘.’ IN email) – VỊ TRÍ(‘@’ IN email) chỉ đơn giản là tính độ dài của chuỗi con.

Tổng Kết

Qua bài viết trên, SmartData hi vọng sẽ giúp được các bạn hiểu rõ hơn về cách thức trích xuất chuỗi trong MySQL và sẽ áp dụng được vào thực tế công việc, cảm ơn các bạn đã theo dõi bài viết này.

Nếu bạn là newbie có thể tham khảo bài viết này để tìm hiểu lộ trình học DA trong 3 tháng của SmartData.

Nếu bạn thấy bài viết hay và hữu ích, bạn có thể tham gia các kênh sau của SmartData để nhận được nhiều hơn nữa:

Bài viết liên quan

Để lại nhận xét

Copyright @2022 – Bản quyền thuộc Học viện dữ lệu Smart Data