STRING/CHAR FUNCTIONS
CONVERSION FUNCTIONS
NUMERIC/MATH FUNCTION
DATE/TIME FUNCTION
ANALYTIC FUNCTION
ADVANCED FUNCTION
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Hàm Hàm REGEXP_INSTR trong Oracle

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.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

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.
    Value Description
    ^ Matches the beginning of a string. If used with a match_parameter of 'm', it matches the start of a line anywhere within expression.
    $ Matches the end of a string. If used with a match_parameter of 'm', it matches the end of a line anywhere within expression.
    * Matches zero or more occurrences.
    + Matches one or more occurrences.
    ? Matches zero or one occurrence.
    . Matches any character except NULL.
    | Used like an "OR" to specify more than one alternative.
    [ ] Used to specify a matching list where you are trying to match any one of the characters in the list.
    [^ ] Used to specify a nonmatching list where you are trying to match any character except for the ones in the list.
    ( ) Used to group expressions as a subexpression.
    {m} Matches m times.
    {m,} Matches at least m times.
    {m,n} Matches at least m times, but no more than n times.
    \n n is a number between 1 and 9. Matches the nth subexpression found within ( ) before encountering \n.
    [..] Matches one collation element that can be more than one character.
    [::] Matches character classes.
    [==] Matches equivalence classes.
    \d Matches a digit character.
    \D Matches a nondigit character.
    \w Matches a word character.
    \W Matches a nonword character.
    \s Matches a whitespace character.
    \S matches a non-whitespace character.
    \A Matches the beginning of a string or matches at the end of a string before a newline character.
    \Z Matches at the end of a string.
    *? Matches the preceding pattern zero or more occurrences.
    +? Matches the preceding pattern one or more occurrences.
    ?? Matches the preceding pattern zero or one occurrence.
    {n}? Matches the preceding pattern n times.
    {n,}? Matches the preceding pattern at least n times.
    {n,m}? Matches the preceding pattern at least n times, but not more than m times.
  • 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.
    Value Description
    'c' Perform case-sensitive matching.
    'i' Perform case-insensitive matching.
    'n' Allows the period character (.) to match the newline character. By default, the period is a wildcard.
    'm' expression is assumed to have multiple lines, where ^ is the start of a line and $ is the end of a line, regardless of the position of those characters in expression. By default, expression is assumed to be a single line.
    'x' Whitespace characters are ignored. By default, whitespace characters are matched like any other character.
  • 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 ('Freetuts 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 freetuts.

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 ('Freetuts 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ọ.

Cùng chuyên mục:

Hàm Hàm ASCII trong Oracle

Hàm Hàm ASCII trong Oracle

Cách sử dụng hàm Hàm ASCII trong 150

Hàm Hàm ASCIISTR trong Oracle

Hàm Hàm ASCIISTR trong Oracle

Cách sử dụng hàm Hàm ASCIISTR trong 150

Hàm Hàm CHR trong Oracle

Hàm Hàm CHR trong Oracle

Cách sử dụng hàm Hàm CHR trong 150

Hàm Hàm COMPOSE trong Oracle

Hàm Hàm COMPOSE trong Oracle

Cách sử dụng hàm Hàm COMPOSE trong 150

Hàm Hàm CONCAT trong Oracle

Hàm Hàm CONCAT trong Oracle

Cách sử dụng hàm Hàm CONCAT trong 150

Hàm Hàm CONVERT trong Oracle

Hàm Hàm CONVERT trong Oracle

Cách sử dụng hàm Hàm CONVERT trong 150

Hàm Hàm DECOMPOSE trong Oracle

Hàm Hàm DECOMPOSE trong Oracle

Cách sử dụng hàm Hàm DECOMPOSE trong 150

Hàm Hàm DUM trong Oracle

Hàm Hàm DUM trong Oracle

Cách sử dụng hàm Hàm DUM trong 150

Hàm Hàm INITCAP trong Oracle

Hàm Hàm INITCAP trong Oracle

Cách sử dụng hàm Hàm INITCAP trong 150

Hàm Hàm INSTR trong Oracle

Hàm Hàm INSTR trong Oracle

Cách sử dụng hàm Hàm INSTR trong 150

Hàm Hàm INSTR2 trong Oracle

Hàm Hàm INSTR2 trong Oracle

Cách sử dụng hàm Hàm INSTR2 trong 150

Hàm Hàm INSTR4 trong Oracle

Hàm Hàm INSTR4 trong Oracle

Cách sử dụng hàm Hàm INSTR4 trong 150

Hàm Hàm INSTRB trong Oracle

Hàm Hàm INSTRB trong Oracle

Cách sử dụng hàm Hàm INSTRB trong 150

Hàm Hàm INSTRC trong Oracle

Hàm Hàm INSTRC trong Oracle

Cách sử dụng hàm Hàm INSTRC trong 150

Hàm Hàm LENGTH trong Oracle

Hàm Hàm LENGTH trong Oracle

Cách sử dụng hàm Hàm LENGTH trong 150

Hàm Hàm LENGTH2 trong Oracle

Hàm Hàm LENGTH2 trong Oracle

Cách sử dụng hàm Hàm LENGTH2 trong 150

Hàm Hàm LOWER trong Oracle

Hàm Hàm LOWER trong Oracle

Cách sử dụng hàm Hàm LOWER trong 150

Hàm Hàm LPAD trong Oracle

Hàm Hàm LPAD trong Oracle

Cách sử dụng hàm Hàm LPAD trong 150

Hàm Hàm LTRIM trong Oracle

Hàm Hàm LTRIM trong Oracle

Cách sử dụng hàm Hàm LTRIM trong 150

Hàm Hàm NCHR trong Oracle

Hàm Hàm NCHR trong Oracle

Cách sử dụng hàm Hàm NCHR trong 150

Top