Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách trích xuất một chuỗi con từ một chuỗi trong PostgreSQL / MySQL

Vấn đề:

Cách trích xuất một chuỗi con từ một chuỗi trong PostgreSQL / MySQL

Ví dụ 1:

Trong emails bảng, có một cột email. Bạn muốn hiển thị bảy ký tự đầu tiên của mỗi email.

Bảng trông như sau:

email
[email protected]
[email protected]
[email protected]
[email protected]

Giải pháp 1:

SELECT
  email,
  SUBSTRING(email, 1, 7) AS substring
FROM emails;

Cú pháp khác:

SELECT
  email,
  SUBSTRING(email FROM 1 FOR 7) AS substring
FROM emails;

Kết quả là:

email chuỗi con
[email protected] jake99 @
[email protected] tamarab
[email protected] notine @
[email protected] jessica

Thảo luận:

Sử dụng SUBSTRING() hàm số. Đối số đầu tiên là chuỗi hoặc tên cột. Đối số thứ hai là chỉ số của ký tự mà tại đó chuỗi con sẽ bắt đầu. Đối số thứ ba là độ dài của chuỗi con.

Coi chừng! Không giống như trong một số ngôn ngữ lập trình khác, chỉ mục bắt đầu từ 1 , không phải 0. Điều này có nghĩa là ký tự đầu tiên có chỉ số 1, ký tự thứ hai có chỉ số 2, v.v.

SUBSTRING(email, 1, 7) sẽ trả về các chuỗi con của các giá trị trong cột email bắt đầu ở đầu các chuỗi (ký tự đầu tiên) và có bảy ký tự. Ký hiệu khác, SUBSTRING(email FROM 1 FOR 7) , làm chính xác như vậy. Đối số sau FROM là chỉ mục bắt đầu và là đối số sau FOR là độ dài chuỗi con.

Đối số thứ ba của SUBSTRING() chức năng là tùy chọn. Nếu bạn bỏ qua nó, bạn sẽ nhận được chuỗi con bắt đầu ở chỉ mục trong đối số thứ hai 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) sẽ .

Ví dụ 2:

Bạn muốn hiển thị chuỗi con giữa chỉ mục 2 và 6 (bao gồm).

Giải pháp 2:

SELECT
  email,
  SUBSTRING(email, 2, 5) AS substring
FROM emails;

Cú pháp khác:

SELECT
  email,
  SUBSTRING(email FROM POSITION('@' IN email)) AS substring
FROM emails;

Kết quả là:

email chuỗi con
[email protected] @ gmail.com
[email protected] @ zoho.com
[email protected] @ yahoo.fr
[email protected] @ onet.pl

Thảo luận:

Bạn sử dụng SUBSTRING() hoạt động giống như trong các ví dụ trước. Lần này, bạn đang tìm kiếm một nhân vật cụ thể có vị trí có thể thay đổi theo từng hàng. Để tìm chỉ mục của ký tự cụ thể, bạn có thể sử dụng POSITION(character IN column) hàm, trong đó ký tự là ký tự cụ thể mà bạn muốn bắt đầu chuỗi con (tại đây, @ ). Cột đối số là cột column từ đó bạn muốn truy xuất chuỗi con; nó cũng có thể là một chuỗi ký tự.

Nếu bạn muốn chuỗi con đi đến cuối chuỗi ban đầu, thì đối số thứ ba trong SUBSTRING() hàm (hoặc FOR đối số) là không cần thiết. Nếu không, nó phải là độ dài của chuỗi con hoặc bạn có thể tính toán nó bằng cách sử dụng POSITION() hàm số. Bạn cũng có thể muốn truy xuất một chuỗi con không kết thúc ở cuối chuỗi nhưng ở một số ký tự cụ thể, ví dụ:trước '.'. Đây là một ví dụ:

SELECT
  email,
  SUBSTRING(email, POSITION('@' IN email), POSITION('.' IN email) - POSITION('@' IN email)) AS substring
FROM emails;

Cú pháp khác:

SELECT
  email,
  SUBSTRING(email FROM POSITION('@' IN email) FOR POSITION('.' IN email) - POSITION('@' IN email)) AS substring
FROM emails;

Kết quả của truy vấn này là:

email chuỗi con
[email protected] @gmail
[email protected] @zoho
[email protected] @yahoo
[email protected] @onet

Phần POSITION('.' IN email) - POSITION('@' IN email) chỉ cần tính độ dài của chuỗi con.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm kiếm văn bản trong các trường trong mỗi bảng của cơ sở dữ liệu MySQL

  2. MySQL:Làm thế nào để sao chép các hàng, nhưng thay đổi một vài trường?

  3. Hiệu suất MYSQL HOẶC so với IN

  4. Các lệnh quản trị cơ sở dữ liệu cơ bản của MySQL - Phần I

  5. Làm cách nào để xóa các bản sao trên bảng MySQL?