INSTR
Syntaxis
Beschrijving van de illustratie instr.gif
Doel
De INSTR
functies zoeken string
naar substring
. De functie retourneert een geheel getal dat de positie aangeeft van het teken in string
dat het eerste teken van deze instantie is. INSTR
berekent strings met behulp van tekens zoals gedefinieerd door de invoertekenset. INSTRB
gebruikt bytes in plaats van tekens. INSTRC
gebruikt volledige Unicode-tekens. INSTR2
gebruikt UCS2-codepunten. INSTR4
gebruikt UCS4-codepunten.
-
position
is een geheel getal dat niet nul is en het teken aangeeft vanstring
waar Oracle Database begint met zoeken. Alsposition
negatief is, telt Oracle terug vanaf het einde vanstring
en zoekt dan achteruit vanaf de resulterende positie. -
occurrence
is een geheel getal dat aangeeft naar welke instantie vanstring
Oracle moet zoeken. De waarde vanoccurrence
moet positief zijn.
Zowel string
als substring
kan elk van de gegevenstypen zijn CHAR
, VARCHAR2
, NCHAR
, NVARCHAR2
, CLOB
, of NCLOB
. De geretourneerde waarde is van NUMBER
datatype.
Zowel position
als occurrence
moet van datatype NUMBER
zijn, of een datatype dat impliciet kan worden geconverteerd naar NUMBER
, en moet worden omgezet in een geheel getal. De standaardwaarden van position
en occurrence
zijn 1, wat betekent dat Oracle begint te zoeken bij het eerste teken van string
voor de eerste keer dat substring
voorkomt. De geretourneerde waarde is relatief ten opzichte van het begin van string
, ongeacht de waarde van position
, en wordt uitgedrukt in tekens. Als de zoekopdracht niet succesvol is (als substring
niet occurrence
keer na het position
teken van string
), dan is de geretourneerde waarde 0.
Zie ook:
Tabel 2-10, “Impliciete typeconversiematrix” voor meer informatie over impliciete conversie
Voorbeelden
In het volgende voorbeeld wordt gezocht in de tekenreeks CORPORATE
FLOOR
, beginnend met het derde teken, voor de tekenreeks “OR
“. Het geeft de positie terug in CORPORATE
FLOOR
waarop het tweede exemplaar van “OR
” begint :
SELECT INSTR("CORPORATE FLOOR","OR", 3, 2) "Instring" FROM DUAL; Instring---------- 14
In het volgende voorbeeld telt Oracle terug vanaf het laatste teken naar het derde teken vanaf het einde, wat het eerste in FLOOR
. Oracle zoekt vervolgens achteruit naar de tweede instantie van OR
, en vindt dat deze tweede instantie begint met het tweede teken in de zoekreeks:
SELECT INSTR("CORPORATE FLOOR","OR", -3, 2)"Reversed Instring" FROM DUAL; Reversed Instring----------------- 2
In het volgende voorbeeld wordt uitgegaan van een dubbelbyte databasetekenset.
SELECT INSTRB("CORPORATE FLOOR","OR",5,2) "Instring in bytes" FROM DUAL;Instring in bytes----------------- 27