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

Cách hoạt động của hàm REGEXP_SUBSTR () trong MySQL

Trong MySQL, REGEXP_SUBSTR() hàm trả về chuỗi con phù hợp với mẫu biểu thức chính quy đã cho.

Nếu không có kết quả phù hợp (tức là chuỗi đầu vào không chứa chuỗi con), kết quả là NULL .

Cú pháp

Cú pháp như sau:

 REGEXP_SUBSTR (expr, pat [, pos [, domains [, match_type]]]) 

Ở đâu expr là chuỗi đầu vào và pat là mẫu biểu thức chính quy cho chuỗi con.

pos tùy chọn đối số cho phép bạn chỉ định một vị trí trong chuỗi để bắt đầu tìm kiếm. Nếu bị bỏ qua, nó bắt đầu ở vị trí 1.

occurrence tùy chọn đối số cho phép bạn chỉ định vị trí xuất hiện của kết quả phù hợp để tìm kiếm. Nếu bỏ qua, lần xuất hiện đầu tiên sẽ được sử dụng (lần xuất hiện 1).

match_type tùy chọn đối số cho phép bạn tinh chỉnh biểu thức chính quy. Ví dụ:bạn có thể sử dụng đối số này để chỉ định đối sánh phân biệt chữ hoa chữ thường hay không.

Ví dụ 1 - Cách sử dụng cơ bản

Đây là một ví dụ cơ bản:

Kết quả
 SELECT REGEXP_SUBSTR ('Thái Lan hoặc Campuchia', 'l.nd'); 

Kết quả:

 + -------- + | Kết quả | + -------- + | đất | + -------- + 

Trong trường hợp này, có một kết quả khớp và chuỗi con được trả về.

Ví dụ 2 - Nhiều Kết hợp

Theo mặc định, nếu có nhiều kết quả phù hợp trong chuỗi, kết quả đầu tiên sẽ được trả về (mặc dù bạn có thể chỉ định một lần xuất hiện khác nếu cần. Chúng tôi sẽ sớm giải quyết vấn đề đó):

 SELECT REGEXP_SUBSTR ('Cho vay đất', 'l.nd') Kết quả; 

Kết quả:

 + -------- + | Kết quả | + -------- + | Cho vay | + -------- + 

Ví dụ 3 - Không phù hợp

Dưới đây là một ví dụ mà không có kết quả phù hợp nào:

Kết quả
 SELECT REGEXP_SUBSTR ('Lend for land', '^ C'); 

Kết quả:

 + -------- + | Kết quả | + -------- + | NULL | + -------- + 

Không có kết quả phù hợp nào nên kết quả là NULL .

Ví dụ 4 - pos Đối số

Dưới đây là một ví dụ về việc chỉ định vị trí bắt đầu:

 SELECT REGEXP_SUBSTR ('Cat Cut Cot', 'C.t', 2) Kết quả; 

Kết quả:

 + -------- + | Kết quả | + -------- + | Cắt | + -------- + 

Chúng tôi đã bắt đầu ở vị trí 2, đến sau vị trí bắt đầu của lần xuất hiện đầu tiên, vì vậy lần xuất hiện tiếp theo được trả về thay thế.

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

 SELECT REGEXP_SUBSTR ('Cat Cut Cot', 'C.t', 1) 'Pos 1', REGEXP_SUBSTR ('Cat Cut Cot', 'C.t', 2) 'Pos 2', REGEXP_SUBSTR ('Cat Cut Cot ',' C.t ', 6)' Pos 6 '; 

Kết quả:

 + ------- + ------- + ------- + | Vị trí 1 | Vị trí 2 | Bài 6 | + ------- + ------- + ------- + | Con mèo | Cắt | Cót | + ------- + ------- + ------- + 

Ví dụ 5 - occurrence Đối số

Dưới đây là một ví dụ về việc sử dụng occurrence lý lẽ. Trong mọi trường hợp, chúng tôi bắt đầu ở vị trí 1:

 SELECT REGEXP_SUBSTR ('Cat Cut Cot', 'C.t', 1, 1) 'Sự xuất hiện 1', REGEXP_SUBSTR ('Cat Cut Cot', 'C.t', 1, 2) 'Sự xuất hiện 2', REGEXP_SUBSTR ('Cat Cut Cot', 'C.t', 1, 3) 'Sự xuất hiện 3'; 

Kết quả:

 + -------------- + -------------- + -------------- + | Sự xuất hiện 1 | Sự xuất hiện 2 | Xảy ra 3 | + -------------- + -------------- + -------------- + | Con mèo | Cắt | Cót | + -------------- + -------------- + -------------- +  

Tuy nhiên, nếu chúng ta bắt đầu ở một vị trí khác, kết quả sẽ khác:

 SELECT REGEXP_SUBSTR ('Cat Cut Cot', 'C.t', 2, 1) 'Sự xuất hiện 1', REGEXP_SUBSTR ('Cat Cut Cot', 'C.t', 2, 2) 'Sự xuất hiện 2', REGEXP_SUBSTR ('Cat Cut Cot', 'C.t', 2, 3) 'Sự xuất hiện 3'; 

Kết quả:

 + -------------- + -------------- + -------------- + | Sự xuất hiện 1 | Sự xuất hiện 2 | Xảy ra 3 | + -------------- + -------------- + -------------- + | Cắt | Cót | NULL | + -------------- + -------------- + -------------- +  

Điều này xảy ra vì vị trí xuất phát của chúng tôi đến sau lần xuất hiện đầu tiên bắt đầu. Do đó, lần xuất hiện 2 trở thành lần xuất hiện 1 và lần xuất hiện 3 trở thành lần xuất hiện 2. Và bởi vì không có lần xuất hiện nào nữa, kết quả của lần xuất hiện 3 là NULL (tức là không có lần xuất hiện 3).

Ví dụ 6 - match_type Đối số

Bạn có thể cung cấp một đối số bổ sung để xác định loại đối sánh. Điều này cho phép bạn chỉ định những thứ như kết hợp có phân biệt chữ hoa chữ thường hay không, có bao gồm dấu chấm cuối dòng hay không, v.v.

Dưới đây là ví dụ về cách chỉ định đối sánh phân biệt chữ hoa chữ thường và không phân biệt chữ hoa chữ thường:

 SELECT REGEXP_SUBSTR ('Cat Cut Cot', 'c.t', 1, 1, 'c') 'Case-Sensitive', REGEXP_SUBSTR ('Cat Cut Cot', 'c.t', 1, 1, 'i') 'Không phân biệt chữ hoa chữ thường'; 

Kết quả:

 + ---------------- + ------------------ + | Phân biệt chữ hoa chữ thường | Phân biệt chữ hoa chữ thường | + ---------------- + ------------------ + | NULL | Mèo | + ---------------- + ------------------ + 

match_type đối số có thể chứa các ký tự sau:

c
Đối sánh phân biệt chữ hoa chữ thường.
i
Đối sánh không phân biệt chữ hoa chữ thường.
m
Chế độ nhiều dòng. Nhận ra các đầu cuối dòng trong chuỗi. Hành vi mặc định là chỉ đối sánh với các dấu cuối dòng ở đầu và cuối của biểu thức chuỗi.
n
. ký tự khớp với các ký tự kết thúc dòng. Giá trị mặc định là cho . khớp để dừng ở cuối dòng.
u
Kết thúc dòng chỉ Unix. Chỉ ký tự dòng mới được nhận dạng là một dòng kết thúc bằng . , ^$ so khớp các toán tử.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. localhost so với 127.0.0.1 trong mysql_connect ()

  2. Đếm số lần xuất hiện của một chuỗi trong trường VARCHAR?

  3. Làm thế nào để viết một API REST?

  4. Tìm nạp dữ liệu từ cơ sở dữ liệu MySQL vào danh sách thả xuống html

  5. 2 cách liệt kê tất cả các thủ tục được lưu trữ trong MySQL