INSTR (Svenska)
Syntax
Beskrivning av illustration instr.gif
Syfte
INSTR funktionssök string efter substring. Funktionen returnerar ett heltal som anger karaktärens position i string som är det första tecknet i denna händelse. INSTR beräknar strängar med hjälp av tecken som definieras av ingångsteckenuppsättningen. INSTRB använder byte istället för tecken. INSTRC använder Unicode-kompletta tecken. INSTR2 använder UCS2-kodpunkter. INSTR4 använder UCS4-kodpunkter.
-
positionär ett icke-noll heltal som anger karaktären påstringdär Oracle Database börjar sökningen. Ompositionär negativ, räknar Oracle bakåt från slutet avstringoch söker sedan bakåt från den resulterande positionen. -
occurrenceär ett heltal som anger vilken förekomst avstringOracle ska söka efter. Värdet föroccurrencemåste vara positivt.
Både string och substring kan vara vilken datatyp som helst CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB eller NCLOB. Det returnerade värdet är av NUMBER datatyp.
Både position och occurrence måste ha datatyp NUMBER, eller vilken datatyp som helst som implicit kan konverteras till NUMBER, och måste lösa till ett heltal. Standardvärdena för både position och occurrence är 1, vilket innebär att Oracle börjar söka efter det första tecknet i string för den första förekomsten av substring. Returvärdet är relativt början på string, oavsett värdet på position, och uttrycks i tecken. Om sökningen misslyckas (om substring inte visas occurrence gånger efter position av string), då är returvärdet 0.
Se även:
Tabell 2-10, ”Implicit typomvandlingsmatris” för mer information om implicit omvandling
Exempel
Följande exempel söker i strängen CORPORATE FLOOR, börjar med det tredje tecknet, för strängen ”OR”. Den returnerar positionen i CORPORATE FLOOR där den andra förekomsten av ”OR” börjar :
SELECT INSTR("CORPORATE FLOOR","OR", 3, 2) "Instring" FROM DUAL; Instring---------- 14
I nästa exempel räknas Oracle bakåt från det sista tecknet till det tredje tecknet från slutet, vilket är det första O i FLOOR. Oracle söker sedan bakåt efter den andra förekomsten av OR och finner att den andra förekomsten börjar med det andra tecknet i söksträngen:
SELECT INSTR("CORPORATE FLOOR","OR", -3, 2)"Reversed Instring" FROM DUAL; Reversed Instring----------------- 2
Nästa exempel förutsätter en databas-teckenuppsättning med dubbla byte.
SELECT INSTRB("CORPORATE FLOOR","OR",5,2) "Instring in bytes" FROM DUAL;Instring in bytes----------------- 27