06/04/2021, 14:51

Hàm Hàm REGEXP_INSTR trong Oracle - Oracle Function

REGEXP_INSTR( STRING, pattern [, start_position [, nth_appearance [, return_option [, match_parameter [, s ub_expression ] ] ] ] ] )

Trong bài này chúng ta sẽ tìm hiểu một hàm rất hay dùng để xử lý chuỗi nâng cao dựa vào chuỗi pattern, đó là hàm REGEXP_INSTR. hàm này có công dụng là tìm một chuỗi con nằm trong chuỗi cha dựa vào mẫu so khớp pattern, hay còn gọi là mẫu Regular Expression.

1. Cú pháp hàm REGEXP_INSTR trong Oracle

Hàm này rất hữu ích bởi nó cho phép bạn tìm những chuỗi con có tính phức tạp, cú pháp của nó như sau.

Cú pháp

REGEXP_INSTR( 
	STRING, 
	pattern [,
	start_position [, 
	nth_appearance [, 
	return_option [, 
	match_parameter [, s
	ub_expression ] ] ] ] ] )

Trong đó:

  • string là chuỗi cha, nghĩa là chuỗi cần tìm chuỗi con trong đó
  • pattern là mẫu so khớp, bạn có thể xem danh sách mẫu so khớp phía dưới đây.
  • start_position là vị trí bắt đầu tìm, nếu không truyền vào thì nó sẽ bắt đàu từ vị trí đầu tiên.
  • nth_appearance là thứ xuất hiện thứ mấy trong chuỗi, ví dụ bạn nhập số 2 thì nó sẽ tìm vị trí của chuỗi con xuất hiện lần thứ hai.
  • return_option là không bắt buộc, nó có hai giá trị là 0 hoặc 1 và mặc định là 0. Nếu sử dụng giá trị 0 thì sẽ trả về vị trí của ký tự đầu tiên, nếu là 1 thì sẽ trả về vị trí của kí tự kế liền với chuỗi so khớp, nghĩa là kí tự tiếp theo.
  • match_parameter là tham số khai báo mưc độ ảnh hưởng.
  • subexpression được sử dụng khi mẫu có biểu thức con và bạn muốn chỉ ra biểu thức con nào trong mẫu là đích trả về. Nó sẽ có giá trị từ 1 đến 9.

Return

Hàm này trả về vị trí xuất hiện của chuỗi con theo thông số cấu hình của hàm.

Version

Hàm này chỉ sử dụng được ở các phiên bản sau:

  • Oracle 12c, Oracle 11g, Oracle 10g

2. Ví dụ hàm REGEXP_INSTR trong Oracle

Sau đây là một vài ví dụ cách sử dụng hàm này, nó hơi phức tạp nên bạn phải thực hành theo mới hiểu được. Nếu bạn chưa biết qua Regex thì cũng là một bất tiện khi học bài này.

Ví dụ: Tìm vị trí xuất hiện của chữ t đầu tiên trong chuỗi.

SELECT REGEXP_INSTR ('Zaidap.com is a great resource', 't')
FROM message;

Result: 5

Trong ví dụ này sẽ trả về 5 tại vì chữ t xuất hiện tại vị trí thứ 5 trong chuỗi Zaidap.com.

Ví dụ 2: Tìm vị trị xuất hiện chữ r khôn phân biệt hoa thường trong chuỗi.

SELECT REGEXP_INSTR ('FReetuts is a great resource', 'r', 1, 1, 0, 'i')
FROM message;

Result: 2

Ví dụ này sẽ trả về 2, tại vì theo thông số cấu hình là không phân biệt hoa thường.

Ví dụ 3: Tìm vị trí xuất hiện chữ a hoặc b hoặc s không phân biệt hoa thường.

SELECT REGEXP_INSTR ('Zaidap.com is a great resource', 'a|b|s', 1, 1, 0, 'i')
FROM message;

Result: 8

Mình đã dùng dấu | để dại diện cho toán tử OR.

Như vậy mình đã giải thích sơ lược về công dụng của hàm REGEXP_INSTR trong Oracle, đây quả thực là rất khó với những bạn không biết lập trình, còn những bạn rành lập trình thì nó rất đơn giản bởi biểu thức chính quy quá quen thuộc đối với họ.

Nguồn: Zaidap.com.net

Bùi Văn Nam

27 chủ đề

7090 bài viết

Cùng chủ đề
0