Learn how extract a sub-string from the given input string with example queries.
REGEXP_SUBSTR function is an extension of the SUBSTR function.
REGEXP_SUBSTR extractS a substring from a string using regular expression pattern matching.If the REGEXP_SUBSTR function does not find any occurrence of pattern, it will return NULL.
REGEXP_SUBSTR(<Source_string>, <Search_pattern>, <Start_position>, <nth_appearance>, <Match_modifier>)
Source_string – is the string to search.
Search_pattern – Is a regular expression to be matched.
Start_position(optional)-Is a positive integer that determines start position in the string that the function begins the search.The position defaults to 1, meaning that the function starts searching at the beginning of the string.
nth_appearance(optional)-It is the nth appearance of pattern in string. If omitted, it defaults to 1 which is the first appearance of pattern in string.
Match_modifier(optional)-It allows you to modify the matching behavior for the REGEXP_INSTR function. It can be a combination of the following
‘c’-Perform case-sensitive matching.
‘i’-Perform case-insensitive matching.
By default REGEXP_SUBSTR function Perform case-sensitive matching.
Example Queries
Extracting the first word from a string
SELECT REGEXP_SUBSTR('This is a oracle substring expression', 'sub')
FROM DUAL;
SELECT REGEXP_SUBSTR('This is a oracle substring expression', 'sub',4)
FROM DUAL;
SELECT REGEXP_SUBSTR('This is a oracle substring expression', 'sub',1,1)
FROM DUAL;
SELECT REGEXP_SUBSTR('This is a oracle substring expression', 'sub',1,1,'i')
FROM DUAL;
SELECT REGEXP_SUBSTR('This is a oracle substring expression', 'SUB',1,1,'i')
FROM DUAL;
Output
sub
SELECT REGEXP_SUBSTR('This is a oracle substring expression', 'SUB',1,1,'i')
FROM DUAL;
SELECT REGEXP_SUBSTR('This is a oracle substring expression', 'SUB',1,1)
FROM DUAL;
Output
NULL
Extract all non white Space characters
SELECT REGEXP_SUBSTR('This is a oracle substring expression', '[^ ]+')
FROM DUAL;
SELECT REGEXP_SUBSTR('This is a oracle substring expression', '(\S*)(\s)')
FROM DUAL;
SELECT REGEXP_SUBSTR ('This is a oracle substring expression', '(\S*)')
FROM dual;
SELECT REGEXP_SUBSTR('This is a oracle substring expression', '(\w)*')
FROM DUAL;
SELECT REGEXP_SUBSTR('This is a oracle substring expression', '[[:alpha:][:digit:]]+')
FROM DUAL;
Output
This
Extract the 5th word in the string
SELECT REGEXP_SUBSTR('This is a oracle substring expression', '[^ ]+',1,5)
FROM DUAL;
SELECT REGEXP_SUBSTR('This is a oracle substring expression', '(\S*)(\s)',1,5)
FROM DUAL;
SELECT REGEXP_SUBSTR('This is a oracle substring expression', '(\W*)(\w)*',1,5)
FROM DUAL;
SELECT REGEXP_SUBSTR('This is a oracle substring expression', '[[:alpha:][:digit:]]+',1,5)
FROM DUAL;
Output
substring
Extract a digit from the given input string.
SELECT REGEXP_SUBSTR ('This is a oracle 11g and 12c substring expression', '(\d)')
FROM dual;
Output
1
Extract a first 2 digit number from the given input string
SELECT REGEXP_SUBSTR ('This is a oracle 11g and 12c substring expression', '(\d)(\d)')
FROM dual;
SELECT REGEXP_SUBSTR ('This is a oracle 11g and 12c substring expression', '(\d)(\d)',1,1)
FROM dual;
SELECT REGEXP_SUBSTR ('This is a oracle 11g and 12c substring expression', '(\d)+')
FROM dual;
SELECT REGEXP_SUBSTR ('This is a oracle 11g and 12c substring expression', '(\d)(\d)*')
FROM dual;
SELECT REGEXP_SUBSTR ('This is a oracle 11g and 12c substring expression', '(\d)+',1,1)
FROM dual;
Output
11
Extract a second 2 digit number from the given input string
SELECT REGEXP_SUBSTR ('This is a oracle 11g and 12c substring expression', '(\d)(\d)',1,2)
FROM dual;
SELECT REGEXP_SUBSTR ('This is a oracle 11g and 12c substring expression', '(\d)+',1,2)
FROM dual;
Output
12
Matching more than one alternative
The |
pattern is used like an “OR” to specify more than one alternative.
Example query
SELECT REGEXP_SUBSTR ('This is a oracle 11g and 12c substring expression', 'oracle|11g|12c')
FROM dual;
Output
oracle