Trong MySQL, REGEXP_LIKE()
hàm được sử dụng để xác định xem một chuỗi có khớp với một biểu thức chính quy hay không.
Hàm trả về 1
nếu chuỗi khớp với biểu thức chính quy được cung cấp và 0
nếu không.
Cú pháp
Cú pháp như sau:
REGEXP_LIKE(expr, pat[, match_type])
Ở đâu expr
là chuỗi đầu vào và pat
là biểu thức chính quy mà bạn đang kiểm tra chuỗi.
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 match_type
để 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:
SELECT REGEXP_LIKE('Cat', '.*') Result;
Kết quả:
+--------+ | Result | +--------+ | 1 | +--------+
Trong trường hợp này, biểu thức chính quy của chúng tôi chỉ định bất kỳ ký tự nào trong bất kỳ chuỗi nào, vì vậy tất nhiên chúng tôi sẽ nhận được một kết quả phù hợp. Hàm trả về 1
để chỉ ra một sự trùng khớp.
Ví dụ 2 - Không phù hợp
Dưới đây là một ví dụ trong đó chuỗi đầu vào không khớp với biểu thức chính quy:
SELECT REGEXP_LIKE('Cat', 'b+') Result;
Kết quả:
+--------+ | Result | +--------+ | 0 | +--------+
Trong trường hợp này, biểu thức chính quy của chúng tôi chỉ định rằng phải có một hoặc nhiều b
ký tự trong bất kỳ trình tự nào. Chuỗi đầu vào của chúng tôi không chứa ký tự này và vì vậy 0
được trả lại.
Ví dụ 3 - So khớp đầu chuỗi
Dưới đây là một ví dụ trong đó biểu thức chính quy chỉ định rằng chuỗi phải bắt đầu bằng các ký tự nhất định:
Kết quảSELECT REGEXP_LIKE('Cat', '^Ca') Result;
Kết quả:
+--------+ | Result | +--------+ | 1 | +--------+
Và đây là những gì sẽ xảy ra nếu không có kết quả phù hợp:
Kết quảSELECT REGEXP_LIKE('Cat', '^Da') Result;
Kết quả:
+--------+ | Result | +--------+ | 0 | +--------+
Ví dụ 4 - Truy vấn Cơ sở dữ liệu
Chức năng này có thể được sử dụng trong WHERE
mệnh đề truy vấn cơ sở dữ liệu để chỉ trả về những hàng có chứa mẫu:
SELECT AlbumId, AlbumName FROM Albums WHERE REGEXP_LIKE(AlbumName, '^Power');
Kết quả:
+---------+------------+ | AlbumId | AlbumName | +---------+------------+ | 1 | Powerslave | | 2 | Powerage | +---------+------------+
Đây là bảng đầy đủ:
SELECT AlbumId, AlbumName FROM Albums;
Kết quả:
+---------+--------------------------+ | AlbumId | AlbumName | +---------+--------------------------+ | 1 | Powerslave | | 2 | Powerage | | 3 | Singing Down the Lane | | 4 | Ziltoid the Omniscient | | 5 | Casualties of Cool | | 6 | Epicloud | | 7 | Somewhere in Time | | 8 | Piece of Mind | | 9 | Killers | | 10 | No Prayer for the Dying | | 11 | No Sound Without Silence | | 12 | Big Swing Face | | 13 | Blue Night | | 14 | Eternity | | 15 | Scandinavia | | 16 | Long Lost Suitcase | | 17 | Praise and Blame | | 18 | Along Came Jones | | 19 | All Night Wrong | | 20 | The Sixteen Men of Tain | +---------+--------------------------+
Ví dụ 5 - 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_LIKE('Cat', '^ca', 'c') 'Case-Sensitive', REGEXP_LIKE('Cat', '^ca', 'i') 'Case-Insensitive';
Kết quả:
+----------------+------------------+ | Case-Sensitive | Case-Insensitive | +----------------+------------------+ | 0 | 1 | +----------------+------------------+
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ử.
Các ví dụ khác
Bạn có thể xem thêm các ví dụ về biểu thức chính quy cơ bản tại MySQL REGEXP Examples. REGEXP
là từ đồng nghĩa với REGEXP_LIKE()
, vì vậy bạn có thể sử dụng các ví dụ thay thế cho nhau.
Cũng xem Cú pháp biểu thức chính quy từ tài liệu MySQL.