Oracle INSTR Function - SQL Syntax Examples
The Oracle INSTR SQL function is popular and performs materially the same operation as instr functions in many other programming languages.
Below shows the INSTR function along with the arguments it takes:
1 | instr(string, substring) |
1 | instr(string, substring, start_position) |
1 | instr(string, substring, start_position, occurrence) |
The Oracle INSTR function returns the position (an integer) within string of the first character in substring that was found while using the corresponding start_position and occurrence.
Following are important rules to follow along with syntax exemplifying the implications of the rules.
- The first character of
stringis atstart_position1.start_positionis defaulted as 1. Ifstart_positionis set to 0, 0 will always be returned, and thus, is not a useful value. Ifstart_positionis negative, searching forsubstringwill begin atstart_positioncharacters counted from the end (right) ofstringand searching will be conducted towards the start (right-to-left) ofstring.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
SELECT instr('abcdabcd','b') FROM dual --returns: 2 SELECT instr('abcdabcd','b',1) FROM dual --returns: 2 SELECT instr('abcdabcd','b',4) FROM dual --returns: 6 SELECT instr('abcdabcd','b',0) FROM dual --returns: 0 SELECT instr('abcdabcd','b',-1) FROM dual --returns: 6 SELECT instr('abcdabcd','b',-4) FROM dual --returns: 2
substringmay exist withinstringmore than once. Theocurrenceattribute is a positive integer that allows you specify which occurrence you are searching for. Remember, if you would like to find the 2cnd-to-last occurrence ofsubstringwithinstring, you should search using astart_positionof -1 to indicate that searching should be conducted backwards, leavingoccurrenceat a value of 2.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
SELECT instr('abcdabcd','b',1,1) FROM dual --returns: 2 SELECT instr('abcdabcd','b',1,2) FROM dual --returns: 6 SELECT instr('abcdabcd','b',1,0) FROM dual --returns: ORA-01428: argument '0' is out of range SELECT instr('abcdabcd','b',1,-1) FROM dual --returns: ORA-01428: argument '-1' is out of range SELECT instr('abcdabcd','b',-1,1) FROM dual --returns: 6 SELECT instr('abcdabcd','b',-1,2) FROM dual --returns: 2
string and substringcan be any of the datatypes CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, or NCLOB. Both start_position and ocurrence must be of datatype NUMBER, or any datatype that can be implicitly converted to NUMBER, and must resolve to an integer (remember that start_position should not be 0 and ocurrence should be greater than or equal to 1). The return value is a NUMBER, and will return 0 when nothing is found in the search.
INSTR is most powerful and often used in practice with the Oracle SUBSTR SQL function. Here are some examples of how to combine SUBSTR with INSTR.
Related Information:
- Oracle SUBSTR Function - SQL Syntax Examples The Oracle
SUBSTRSQL Function is very common, and many times misused. Below shows theSUBSTRfunction along with the... - Oracle SUBSTR with INTSR Function - SQL Syntax Examples Oracle SUBSTR and INSTR SQL functions are typically used together in practice for parsing a string. Following are...
- Oracle TO_DATE Function - SQL Syntax Examples The Oracle
TO_DATESQL function is used to convert a TEXT or NTEXT representation of a date into an Oracle... - Oracle TO_CHAR Function - SQL Syntax Examples (Most With Dates, TO_DATE) This article provides common examples of TO_CHAR using dates....
- SQL LIKE - Oracle LIKE Operator - SQL Syntax Examples The reserved word
LIKEin Oracle SQL represents an operator that performs some basic matching on text.LIKEprovides a... - Google Custom Search Engine (CSE) The site search game is changing with Google CSE....
- alter table, add column - Oracle Example Syntax Following is simple example syntax for adding a column to an Oracle table using “alter table” SQL: 1 2 ALTER...
- Oracle Rename Table - Example Syntax and Dependencies Renaming a table in Oracle is simple. Following is the generic Oracle table rename syntax: 1 ALTER TABLE current_table_name RENAME...
