PostgreSQL Hàm SUBSTRING() với ví dụ về Regex

⚡ Tóm tắt thông minh

PostgreSQL Chuỗi con ví dụtracHàm này trả về một phần của chuỗi, sử dụng vị trí bắt đầu và độ dài tùy chọn, đồng thời cũng so khớp văn bản với biểu thức chính quy POSIX để trích xuất các mẫu như số hoặc mã.

  • 📋 Cú pháp: substring( string [từ đầu] [cho độ dài] ) trả về một phần của chuỗi nguồn.
  • 1️⃣ Vị trí: Vị trí ký tự bắt đầu từ 1, và nếu bỏ qua độ dài thì sẽ đọc đến cuối chuỗi.
  • 🔎 Biểu thức chính quy: Chuỗi con (chuỗi từ mẫu) ví dụtracĐây là đoạn văn bản đầu tiên khớp với biểu thức chính quy POSIX.
  • 🧮 Nhómping: Một nhóm nằm trong ngoặc đơn trong mẫu chỉ trả về phần được bắt giữ của kết quả khớp.
  • 🖥️ pgAdmin: Mọi truy vấn chuỗi con đều được thực thi theo cùng một cách trong trình soạn thảo truy vấn pgAdmin.
  • 🤖 Hỗ trợ AI: Trợ lý AI tạo và giải thích các mẫu biểu thức chính quy để trích xuất chuỗi con chính xác.tracsự.

PostgreSQL Hàm SUBSTRING với biểu thức chính quy

Là gì PostgreSQL Chuỗi con?

PostgreSQL Hàm substring giúp bạn ví dụ nhưtracHàm `t` trả về một phần của chuỗi. Thay vì trả về toàn bộ chuỗi, nó chỉ trả về một phần, điều này hữu ích cho việc cắt bớt mã và đọc các trường có độ rộng cố định.

cú pháp

PostgreSQL hàm chuỗi con có cú pháp như sau:

substring( string [from starting_position] [for length] )

Thông số Kỹ thuật

Các tham số sau được sử dụng với hàm substring:

chuỗi Chuỗi nguồn có kiểu dữ liệu là varchar, char, string, v.v.
điểm xuất phát Một tham số tùy chọn. Nó biểu thị vị trí mà quá trình xử lý diễn ra.tracquá trình xử lý chuỗi sẽ bắt đầu. Nếu bạn bỏ qua tham số này, ví dụtracQuá trình bắt đầu từ vị trí 1, tức là ký tự đầu tiên trong chuỗi.
chiều dài Một tham số tùy chọn. Tham số này biểu thị số lượng ký tự cần được hiển thị.tracđược trích xuất từ ​​chuỗi. Nếu bạn bỏ qua tham số này, hàm sẽ...tracts từ vị trí bắt đầu đến cuối chuỗi.

Các ví dụ

Trong ví dụ này, chúng ta muốn...tract 4 ký tự đầu tiên của từ Guru99:

SELECT substring('Guru99' for 4);

Lệnh sẽ trả về kết quả sau:

PostgreSQL Chuỗi con

Chúng tôi không chỉ định vị trí bắt đầu, vì vậy...tracViệc lặp lại chuỗi con bắt đầu từ vị trí 1. Bốn ký tự đã được lấy ra.tracted để trả về kết quả ở trên.

Ví dụ sau đây cho thấy cách xác định vị trí bắt đầu:

SELECT substring('Guru99' from 1 for 4);

Lệnh sẽ trả về kết quả sau:

PostgreSQL Chuỗi con

Chúng tôi đã chỉ rõ rằng extracViệc trích xuất chuỗi con nên bắt đầu từ vị trí 1 và phải bao gồm 4 ký tự.tracted.

Chúng ta hãy cùng thảo luận.tract 99 từ chuỗi Guru99:

SELECT substring('Guru99' from 5);

Lệnh sẽ trả về kết quả sau:

PostgreSQL Chuỗi con

Chúng tôi đã chỉ định vị trí bắt đầu là 5. Vì số lượng ký tự cần lấy ra là...tracted không được chỉ định, ví dụtracquá trình chạy đến hết chuỗi.

Đây là một ví dụ khác:

SELECT substring('Guru99' from 5 for 2);

Lệnh sẽ trả về kết quả sau:

PostgreSQL Chuỗi con

Chúng tôi bắt đầu từ...tracvị trí thứ 5, và 2 ký tự đã bị loại bỏ.tracted.

Hãy xem xét bảng Sách được đưa ra dưới đây:

PostgreSQL Bảng Substring Book

Chúng ta muốn có một ý tưởng sơ bộ về tên của mỗi cuốn sách. Chúng ta có thể ví dụ như...tracChỉ lấy 15 ký tự đầu tiên từ cột tên của bảng:

SELECT
   id,
   SUBSTRING(name, 1, 15 ) AS name_initial
FROM
   Book
ORDER BY
   id;

Lệnh sẽ trả về kết quả sau:

PostgreSQL Kết quả chuỗi con

Bây giờ chúng tôi đã có ý tưởng sơ bộ về tên của mỗi cuốn sách.

So khớp các chuỗi con với biểu thức chính quy SQL

In PostgreSQLbạn có thể ví dụtracmột chuỗi con khớp với biểu thức chính quy POSIX được chỉ định. Trong trường hợp này, hàm substring sử dụng cú pháp sau:

SUBSTRING(string FROM matching_pattern)

or

SUBSTRING(string, matching_pattern);

Dưới đây là giải thích về các tham số nêu trên. Chuỗi là chuỗi nguồn, có nguồn gốc từ... loại dữ liệu Các kiểu dữ liệu như varchar, char, string, v.v. Tham số `matching_pattern` là mẫu được sử dụng để tìm kiếm trong chuỗi.

Các ví dụ

SELECT
   SUBSTRING (
      'Your age is 22',
      '([0-9]{1,2})'
   ) as age;

Lệnh sẽ trả về kết quả sau:

So khớp các chuỗi con với biểu thức chính quy SQL

Chuỗi đầu vào của chúng ta là "Tuổi của bạn là 22". Trong mẫu này, chúng ta tìm kiếm một mẫu số; khi tìm thấy, hàm cắt chuỗi sẽ thực thi.tracChỉ có hai ký tự.

Cách so khớp chuỗi con bằng pgAdmin

Bây giờ chúng ta hãy xem cách thực hiện các thao tác này bằng pgAdmin. Các truy vấn không cần cơ sở dữ liệu có thể được thực thi trực tiếp từ cửa sổ trình chỉnh sửa truy vấn. Chỉ cần làm như sau:

Bước 1) Đăng nhập vào tài khoản pgAdmin của bạn.

Bước 2) Trên pgAdmin, hãy nhấp vào biểu tượng Công cụ truy vấn.

So khớp chuỗi con bằng pgAdmin

Cửa sổ soạn thảo truy vấn sẽ được mở.

Bước 3) Nhập truy vấn sau vào cửa sổ trình soạn thảo.

SELECT substring('Guru99' for 4);

Bước 4) Nhấp vào biểu tượng Thực thi để thực hiện truy vấn.

So khớp chuỗi con bằng pgAdmin

Bước 5) Quá trình thực thi truy vấn đã hoàn tất. Kết quả trả về sẽ như sau:

So khớp chuỗi con bằng pgAdmin

Ví dụ 2:

SELECT substring('Guru99' from 1 for 4);

Nó sẽ trả về kết quả sau:

So khớp chuỗi con bằng pgAdmin

Đây là ví dụ tiếp theo:

SELECT substring('Guru99' from 5);

Nó sẽ trả về kết quả sau:

So khớp chuỗi con bằng pgAdmin

Ví dụ 3:

SELECT substring('Guru99' from 5 for 2);

Nó sẽ trả về kết quả sau:

So khớp chuỗi con bằng pgAdmin

Bây giờ, chúng ta hãy chạy ví dụ bằng bảng Book của cơ sở dữ liệu Demo:

Bước 1) Đăng nhập vào tài khoản pgAdmin của bạn.

Bước 2) Trên thanh điều hướng bên trái, nhấp vào Cơ sở dữ liệu, sau đó nhấp vào Bản demo.

So khớp chuỗi con bằng pgAdmin

Bước 3) Nhập truy vấn vào trình soạn thảo truy vấn:

SELECT
   id,
   SUBSTRING(name, 1, 15 ) AS name_initial
FROM
   Book
ORDER BY
   id;

Bước 4) Nhấp vào nút Thực hiện.

So khớp chuỗi con bằng pgAdmin

Nó sẽ trả về kết quả sau:

PostgreSQL Kết quả chuỗi con

Bây giờ chúng ta đã có ý tưởng cơ bản về tên của mỗi cuốn sách.

So khớp các chuỗi con với biểu thức chính quy SQL

Để thực hiện thao tác tương tự trên pgAdmin, hãy làm như sau:

Bước 1) Đăng nhập vào tài khoản pgAdmin của bạn.

Bước 2) Nhấp vào biểu tượng Công cụ truy vấn.

So khớp các chuỗi con với biểu thức chính quy SQL

Cửa sổ soạn thảo truy vấn sẽ được mở.

Bước 3) Nhập truy vấn sau vào cửa sổ trình soạn thảo.

SELECT
   SUBSTRING (
      'Your age is 22',
      '([0-9]{1,2})'
   ) as age;

Bước 4) Nhấp vào biểu tượng Thực thi để thực hiện truy vấn.

So khớp các chuỗi con với biểu thức chính quy SQL

Nó sẽ trả về kết quả sau:

So khớp các chuỗi con với biểu thức chính quy SQL

Tải xuống Cơ sở dữ liệu được sử dụng trong Hướng dẫn này

Câu Hỏi Thường Gặp

SUBSTR là một từ viết tắt ngắn gọn hơn của SUBSTRING và trả về một phần của chuỗi. SUBSTRING cũng hỗ trợ các từ khóa FROM và FOR theo chuẩn SQL cộng với các biểu thức chính quy POSIX, trong khi SUBSTR chỉ chấp nhận các đối số vị trí và độ dài được phân tách bằng dấu phẩy.

PostgreSQL Hàm SUBSTRING sử dụng chỉ số bắt đầu từ 1, vì vậy ký tự đầu tiên nằm ở vị trí 1, chứ không phải 0. Truyền vào vị trí bắt đầu là 1 sẽ trả về chuỗi từ ký tự đầu tiên trở đi.

Khi mẫu POSIX không khớp với bất kỳ chuỗi nào, hàm SUBSTRING sẽ trả về NULL thay vì một chuỗi rỗng. Việc kiểm tra kết quả bằng IS NULL cho phép bạn xử lý các hàng không có mẫu mong đợi.

Hãy sử dụng biểu thức chính quy để bắt lấy những gì theo sau ký tự. Ví dụ: SUBSTRING(email FROM '@(.*)') sẽ trả về mọi thứ sau dấu @, cho bạn phần tên miền của mỗi địa chỉ email.

Hãy sử dụng SUBSTRING khi bạn cần đoạn văn bản khớp đầu tiên dưới dạng giá trị đơn giản. Chọn regexp_matches() khi bạn muốn mọi kết quả khớp hoặc nhiều nhóm bắt giữ được trả về dưới dạng mảng, vì SUBSTRING chỉ trả về kết quả khớp đầu tiên.

Các trợ lý AI như GitHub Copilot chuyển đổi mô tả bằng tiếng Anh thông thường thành mẫu POSIX, giải thích từng token khớp với cái gì và đề xuất các chuỗi thử nghiệm, giúp giảm thiểu việc thử và sai khi xây dựng ví dụ chuỗi con.tractruy vấn tion.

Vâng. Hãy mô tả phần văn bản bạn muốn, và trợ lý AI sẽ soạn thảo lệnh SUBSTRING với các vị trí chính xác hoặc biểu thức chính quy, mà bạn có thể chạy và tinh chỉnh bên trong pgAdmin.

Đúng vậy, việc so khớp chuỗi con POSIX mặc định là phân biệt chữ hoa chữ thường. Để so khớp bất kể chữ hoa chữ thường, hãy viết thường cả hai đầu vào, ví dụ: SUBSTRING(lower(name) FROM lower(pattern)), để chữ hoa và chữ thường được xử lý như nhau.

Tóm tắt bài viết này với: