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

Postgres:trích xuất văn bản lên đến Ký tự thứ N trong một chuỗi

Bạn có thể sử dụng đối sánh mẫu chức năng trong Postgres.

Đầu tiên tìm ra một mẫu để nắm bắt mọi thứ lên đến > thứ tư tính cách.

Để bắt đầu mẫu của bạn, bạn nên tạo một nhóm phụ nắm bắt không phải > ký tự và một > nhân vật:

([^>]*>)

Sau đó, chụp lại bốn lần để đến phiên bản thứ tư của >

([^>]*>){4}

Sau đó, bạn sẽ cần phải kết hợp nó trong một nhóm để trận đấu đưa trở lại tất cả bốn trường hợp:

(([^>]*>){4})

và đặt một ký hiệu bắt đầu của chuỗi để có số đo tốt để đảm bảo rằng nó chỉ khớp với từ đầu của Chuỗi (không phải ở giữa):

^(([^>]*>){4})

Đây là một ví dụ regex101 hoạt động về điều đó!

Khi bạn có mẫu sẽ trả về những gì bạn muốn trong phần tử nhóm đầu tiên (mà bạn có thể biết tại regex trực tuyến ở bảng điều khiển bên phải), bạn cần chọn lại nó trong SQL.

Trong Postgres, hàm chuỗi con có tùy chọn sử dụng mẫu regex để trích xuất văn bản ra khỏi đầu vào bằng cách sử dụng câu lệnh 'from' trong chuỗi con.

Để hoàn thành, hãy tập hợp tất cả lại với nhau!

select substring(filter_type from '^(([^>]*>){4})')
from filter_table

Xem sqlfiddle đang hoạt động tại đây

Nếu bạn muốn đối sánh toàn bộ chuỗi bất cứ khi nào có ít hơn bốn phiên bản của > , sử dụng biểu thức chính quy này:

 ^(([^>]*>){4}|.*)


  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ại sao tôi gặp lỗi không thể kết nối với máy chủ cho các postgres trong Mac OS Lion?

  2. postgres chỉ sử dụng chỉ mục được sắp xếp để truy vấn bảng bản ghi 5m

  3. Làm cách nào để chỉ tham gia một hàng trong bảng đã tham gia với postgres?

  4. Xóa các hàng có khóa ngoại trong PostgreSQL

  5. Cách Atan2d () hoạt động trong PostgreSQL