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

Cách REGEXP_SUBSTR () hoạt động trong MariaDB

Trong MariaDB, 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ả khớp nào (tức là chuỗi đầu vào không chứa chuỗi con), kết quả là một chuỗi trống.

Cú pháp

Cú pháp như sau:

 REGEXP_SUBSTR(subject,pattern) 

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

Lưu ý rằng, tại thời điểm viết bài, phiên bản REGEXP_SUBSTR() của MariaDB chấp nhận ít đối số hơn REGEXP_SUBSTR() của MySQL . Phiên bản của MySQL cho phép bạn cung cấp các đối số cho vị trí bắt đầu của tìm kiếm, vị trí xuất hiện để tìm kiếm, cũng như một cách để tinh chỉnh biểu thức chính quy.

Ví dụ

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

 SELECT REGEXP_SUBSTR('Thailand and Laos', 'l.nd'); 

Kết quả:

 + -------------------------------------------- + | REGEXP_SUBSTR ('Thái Lan và Lào', 'l.nd') | + ---------------------------------- ---------- + | đất | + -------------------------------------------- +  

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

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 được trả về:

 SELECT REGEXP_SUBSTR('Lend for land', 'l.nd'); 

Kết quả:

 + ---------------------------------------- + | REGEXP_SUBSTR ('Cho vay đất', 'l.nd') | + ---------------------------------- ------ + | Cho vay | + ---------------------------------------- + 

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:

 SELECT REGEXP_SUBSTR('Lend for land', '^C'); 

Kết quả:

 + -------------------------------------- + | REGEXP_SUBSTR ('Cho vay đất', '^ C') | + ----------------------------------- --- + | | + -------------------------------------- + 

Không có kết quả phù hợp nào nên kết quả là một chuỗi trống.

Phân biệt chữ hoa chữ thường

REGEXP_SUBSTR() hàm tuân theo các quy tắc phân biệt chữ hoa chữ thường của phép đối chiếu hiệu quả. Đối sánh được thực hiện phân biệt chữ hoa chữ thường đối với các đối chiếu phân biệt chữ hoa chữ thường và phân biệt chữ hoa chữ thường đối với các đối chiếu phân biệt chữ hoa chữ thường và đối với dữ liệu nhị phân.

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

 SELECT 
    REGEXP_SUBSTR('My Cats', 'c.t') AS "My Default",
    REGEXP_SUBSTR(_latin7'My Cats' COLLATE latin7_general_ci, 'c.t') AS "Case Insensitive",
    REGEXP_SUBSTR(_latin7'My Cats' COLLATE latin7_general_cs, 'c.t') AS "Case Sensitive"; 

Kết quả:

 + ------------ + ------------------ + -------------- - + | Mặc định của tôi | Không phân biệt chữ hoa chữ thường | Phân biệt chữ hoa chữ thường | + ------------ + ------------------ + -------------- - + | Con mèo | Con mèo | | + ------------ + ------------------ + ---------------- + 

Đối chiếu mặc định của tôi là không phân biệt chữ hoa chữ thường. Hai chuỗi còn lại buộc phải đối chiếu phân biệt chữ hoa chữ thường và phân biệt chữ hoa chữ thường.

Cung cấp BINARY chuỗi cũng phân biệt chữ hoa chữ thường (xem bên dưới).

Chuỗi nhị phân

Chuyển BINARY chuỗi cũng ảnh hưởng đến độ phân biệt chữ hoa và chữ thường. Với BINARY chuỗi, một ký tự viết hoa khác với ký tự viết thường của nó:

Ví dụ:

 SELECT 
    REGEXP_SUBSTR('My Cats', 'c.t') AS "Character",
    REGEXP_SUBSTR(BINARY 'My Cats', 'c.t') AS "Binary"; 

Kết quả:

 + ----------- + -------- + | Nhân vật | Nhị phân | + ----------- + -------- + | Con mèo | | + ----------- + -------- + 

Đây là những gì sẽ xảy ra nếu chúng tôi thay đổi trường hợp:

 SELECT 
    REGEXP_SUBSTR('My Cats', 'C.t') AS "Character",
    REGEXP_SUBSTR(BINARY 'My Cats', 'C.t') AS "Binary"; 

Kết quả:

 + ----------- + -------- + | Nhân vật | Nhị phân | + ----------- + -------- + | Con mèo | Mèo | + ----------- + -------- + 

Đối số rỗng

Chuyển null vì bất kỳ đối số nào dẫn đến null :

 SELECT 
    REGEXP_SUBSTR(null, 'c.t') AS "1",
    REGEXP_SUBSTR('Cat', null) AS "2",
    REGEXP_SUBSTR(null, null) AS "3"; 

Kết quả:

 + ------ + ------ + ------ + | 1 | 2 | 3 | + ------ + ------ + ------ + | NULL | NULL | KHÔNG | + ------ + ------ + ------ + 

Số lượng đối số sai

Truyền sai số đối số hoặc không có đối số, dẫn đến lỗi:

 SELECT REGEXP_SUBSTR('Cat'); 

Kết quả:

 ERROR 1582 (42000):Số lượng tham số không chính xác trong lệnh gọi hàm gốc 'REGEXP_SUBSTR' 

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 20 Mẹo:Chuẩn bị cơ sở dữ liệu của bạn cho Thứ Sáu Đen và Thứ Hai Điện Tử

  2. Hàm MIN () trong MariaDB

  3. Cách tạo số nguyên ngẫu nhiên trong phạm vi trong MariaDB

  4. MariaDB JSON_REMOVE () Giải thích

  5. Cân bằng tải cơ sở dữ liệu:Thiết lập phân tán so với tập trung