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

Làm thế nào để trích xuất một chuỗi con từ một chuỗi trong Oracle / SQLite

Vấn đề:

Bạn có một cột chuỗi và bạn muốn lấy chuỗi con từ chúng.

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,
  SUBSTR(email, 1, 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 SUBSTR() 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ư 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.

>SUBSTR(email, 1, 7) sẽ trả về các chuỗi con của các giá trị trong cột email bắt đầu bằng ký tự đầu tiên và có bảy ký tự.

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,
  SUBSTR(email, 2, 5) AS substring
FROM emails;

Kết quả là:

email chuỗi con
[email protected] ake99
[email protected] amara
[email protected] otine
[email protected] essic

Thảo luận:

Bạn sử dụng SUBSTR() hoạt động giống như trong ví dụ trước. Lần này, đối số thứ hai của hàm là 2, vì chúng ta muốn bắt đầu ở chỉ mục 2. Độ dài của chuỗi con là 5 (end_index - start_index + 1 ).

Ví dụ 3:

Bạn muốn hiển thị chuỗi con bắt đầu bằng dấu @ và kết thúc ở cuối chuỗi, nhưng bạn không biết chỉ mục hoặc độ dài chính xác.

Giải pháp 3:

SELECT
  email,
  SUBSTR(email, INSTR(email, '@'), LENGTH(email) - INSTR(email, '@') + 1) 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 SUBSTR() 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 INSTR(column, character) hàm, trong đó cột là chuỗi ký tự hoặc cột mà bạn muốn truy xuất chuỗi con từ đó và ký tự là ký tự character tại đó bạn muốn bắt đầu chuỗi con (tại đây, @ ).

Đối số thứ ba của SUBSTR() hàm là độ dài của chuỗi con. Bạn có thể tính toán nó bằng cách sử dụng INSTR()LENGTH() chức năng. Bạn thực hiện việc này bằng cách trừ chỉ số khỏi độ dài cột, sau đó thêm 1:

LENGTH(email) - INSTR(email, '@') + 1

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à cách bạn có thể làm điều này:

SELECT
  email,
  SUBSTR(email, INSTR(email, '@'), INSTR(email, '.') - INSTR(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 INSTR(email, '.') - INSTR(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. Cách kết nối với Oracle bằng Tên dịch vụ thay vì SID

  2. Cú pháp SQL Oracle:Mã định danh được trích dẫn

  3. OracleException (0x80004005) Khi kết nối với cơ sở dữ liệu Oracle

  4. Oracle sao chép dữ liệu sang một bảng khác

  5. Truy cập bảng của người dùng khác trong Quy trình được lưu trữ của Oracle