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
.
,^
và$
so khớp các toán tử.