Hướng dẫn MariaDB này giải thích cách sử dụng hàm MariaDB REGEXP_REPLACE với cú pháp và ví dụ
Sự miêu tả
Hàm MariaDB REGEXP_REPLACE là phần mở rộng của hàm REPLACE. Chức năng này, được giới thiệu trong MariaDB 10. 0. 5, sẽ cho phép bạn thay thế tất cả các lần xuất hiện của một chuỗi con trong một chuỗi bằng cách sử dụng khớp mẫu biểu thức chính quy
cú pháp
Cú pháp của hàm REGEXP_REPLACE trong MariaDB là
REGEXP_REPLACE[ string, pattern, replacement ]
Tham số hoặc Đối số
stringChuỗi cần tìm. mẫuThông tin phù hợp với biểu thức chính quy. Nó có thể là sự kết hợp của những điều sau đây
ValueDescription^Khớp với phần đầu của chuỗi. Nếu được sử dụng với tham số match_của 'm', nó sẽ khớp với đầu dòng ở bất kỳ đâu trong biểu thức. $ Khớp với phần cuối của một chuỗi. Nếu được sử dụng với tham số match_của 'm', nó sẽ khớp với cuối dòng ở bất kỳ đâu trong biểu thức. *Không khớp hoặc nhiều lần xuất hiện. +Khớp một hoặc nhiều lần xuất hiện. ?Trận đấu không hoặc một lần xuất hiện. Khớp với bất kỳ ký tự nào ngoại trừ NULL. Được sử dụng như một "HOẶC" để chỉ định nhiều hơn một phương án thay thế. [ ]Được sử dụng để chỉ định một danh sách khớp mà bạn đang cố gắng khớp bất kỳ ký tự nào trong danh sách. [^ ]Được sử dụng để chỉ định một danh sách không khớp mà bạn đang cố khớp bất kỳ ký tự nào ngoại trừ các ký tự trong danh sách. [ ]Được sử dụng để nhóm các biểu thức thành một biểu thức con. {m}Trận đấu m lần. {m,}Trận đấu ít nhất m lần. {m,n}Trận đấu ít nhất m lần, nhưng không quá n lần. \nn là một số từ 1 đến 9. Khớp với biểu thức con thứ n được tìm thấy trong [ ] trước khi gặp \n. [. ] Khớp một phần tử đối chiếu có thể có nhiều hơn một ký tự. [. ] Khớp các lớp nhân vật. [==]Khớp với các lớp tương đương. \dKhớp một ký tự chữ số. \DKhớp một ký tự không có chữ số. \wKhớp một ký tự từ. \WKhớp một ký tự không phải từ. \sKhớp với một ký tự khoảng trắng. \Smatches một ký tự không phải khoảng trắng. *?Khớp mẫu trước không hoặc nhiều lần xuất hiện. +?Khớp mẫu trước đó một hoặc nhiều lần xuất hiện. ??Khớp mẫu trước không hoặc một lần xuất hiện. {n}?Khớp mẫu trước đó n lần. {n,}?Khớp mẫu trước đó ít nhất n lần. {n,m}?Khớp mẫu trước đó ít nhất n lần, nhưng không nhiều hơn m lần. replaceChuỗi con thay thế. Tất cả các lần xuất hiện của mẫu được tìm thấy trong chuỗi được thay thế bằng thay thếGhi chú
- Nếu hàm REGEXP_REPLACE không tìm thấy bất kỳ sự xuất hiện nào của mẫu, nó sẽ trả về chuỗi ban đầu mà không có bất kỳ thay đổi nào
- Trang này áp dụng cho MariaDB 10. 0. 5 trở lên, sử dụng thư viện regex PCRE
- Xem thêm hàm REPLACE
Áp dụng đối với
Hàm REGEXP_REPLACE có thể được sử dụng trong các phiên bản sau của MariaDB
- MariaDB 10. 0. 5+
Ví dụ - So khớp trên nhiều phương án thay thế
Hãy bắt đầu bằng cách xem cách sử dụng mẫu |
với hàm REGEXP_REPLACE trong MariaDB
Ví dụ
SELECT REGEXP_REPLACE ['TechOnTheNet','a|e|i', '8']; Result: 'T8ch8nTh8N8t'
Các ví dụ REGEXP_REPLACE này sẽ thay thế tất cả các lần xuất hiện của các chữ cái "a", "e", "i" hoặc "o" trong chuỗi "TechOnTheNet" bằng "8". Hàm REGEXP_REPLACE thực hiện tìm kiếm không phân biệt chữ hoa chữ thường nên việc các giá trị "a", "e", "i" hoặc "o" là chữ hoa hay chữ thường không quan trọng
Tìm kiếm phân biệt chữ hoa chữ thường
Nếu chúng tôi muốn thực hiện tìm kiếm phân biệt chữ hoa chữ thường, chúng tôi cần sửa đổi hàm REGEXP_REPLACE của mình để sử dụng chuỗi nhị phân. Điều này có thể được thực hiện bằng cách sử dụng mẫu [?-i]
SELECT REGEXP_REPLACE ['TechOnTheNet', '[?-i]a|[?-i]e|[?-i]i|[?-i]o', '8']; Result: 'T8chOnTh8N8t'
Trong ví dụ này, chúng tôi đã sử dụng chúng tôi đã sử dụng mẫu [?-i]
để buộc hàm REGEXP_REPLACE thực hiện khớp mẫu phân biệt chữ hoa chữ thường. Vì vậy, bây giờ ký tự "O" viết hoa trong "TechOnTheNet" không được thay thế bằng "8"
Tìm kiếm theo cột trong bảng
Bây giờ, hãy trình bày cách sử dụng hàm REGEXP_REPLACE với một cột trong bảng
Vì vậy, giả sử chúng ta có một bảng liên hệ với dữ liệu sau
Bây giờ, hãy chạy truy vấn sau
SELECT contact_id, last_name, REGEXP_REPLACE [last_name, 'a|e|i|o|u', "z"] AS Result FROM contacts;
Đây là những kết quả sẽ được trả về bởi truy vấn
contact_idlast_nameResult1000Andersonzndzrszn2000SmithSmzth3000JohnsonJzhnsznVí dụ - Ghép từ
Tiếp theo, hãy xem cách sử dụng hàm REGEXP_REPLACE để thay thế từ đầu tiên trong chuỗi
Ví dụ
SELECT REGEXP_REPLACE ['TechOnTheNet is a great resource', '[\\S*]', 'CheckYourMath']; Result: 'CheckYourMath is a great resource'
Ví dụ này sẽ trả về 'CheckYourMath is a great resource' bởi vì nó sẽ thay thế tất cả các ký tự không phải khoảng trắng như được chỉ định bởi
SELECT REGEXP_REPLACE ['TechOnTheNet','a|e|i', '8']; Result: 'T8ch8nTh8N8t'1 và dừng khi chạm vào ký tự khoảng trắng đầu tiên [nghĩa là. ký tự khoảng trắng]. Điều đó sẽ dẫn đến từ 'TechOnTheNet' được thay thế bằng 'CheckYourMath'
Ví dụ - Khớp trên các ký tự chữ số
Bây giờ, hãy xem tiếp cách chúng ta sẽ sử dụng hàm REGEXP_REPLACE để khớp trên một mẫu ký tự chữ số
Ví dụ
SELECT REGEXP_REPLACE ['7, 8, and 15 are numbers in this example', '\\d', 'abc']; Result: 'abc, abc, and abcabc are numbers in this example'
Ví dụ này sẽ thay thế các chữ số trong chuỗi bằng "abc" như được chỉ định bởi
SELECT REGEXP_REPLACE ['TechOnTheNet','a|e|i', '8']; Result: 'T8ch8nTh8N8t'2. Trường hợp này sẽ ghép vào các con số 7, 8, 15
Chúng tôi có thể thay đổi mẫu của mình để chỉ thay thế các số có hai chữ số
Ví dụ
________số 8_______Ví dụ này sẽ thay thế tất cả các số có hai chữ số bằng "abc" như được chỉ định bởi
SELECT REGEXP_REPLACE ['TechOnTheNet','a|e|i', '8']; Result: 'T8ch8nTh8N8t'3. Trong trường hợp này, nó sẽ bỏ qua các giá trị số 7 và 8 và chỉ thay thế số 15
Bây giờ, hãy xem cách chúng ta sẽ sử dụng hàm REGEXP_REPLACE với một cột trong bảng và tìm kiếm một số có hai chữ số
Ví dụ
SELECT REGEXP_REPLACE [address, '\\d', ''] FROM contacts;
Trong ví dụ này, chúng tôi sẽ xóa tất cả các số khỏi trường địa chỉ trong bảng danh bạ. Điều này được thực hiện bằng cách tìm kiếm tất cả các số bằng cách sử dụng
SELECT REGEXP_REPLACE ['TechOnTheNet','a|e|i', '8']; Result: 'T8ch8nTh8N8t'2 và thay thế bằng ""