INSTR (Dansk)
Syntaks
Beskrivelse af illustration instr.gif
Formål
INSTR funktionssøgning string efter substring. Funktionen returnerer et heltal, der angiver placeringen af tegnet i string, der er det første tegn i denne begivenhed. INSTR beregner strenge ved hjælp af tegn som defineret af inputtegnsættet. INSTRB bruger byte i stedet for tegn. INSTRC bruger Unicode-komplette tegn. INSTR2 bruger UCS2-kodepunkter. INSTR4 bruger UCS4-kodepunkter.
-
positioner et ikke-nul heltal, der angiver karakteren afstringhvor Oracle Database begynder søgningen. Hvispositioner negativ, tæller Oracle baglæns fra slutningen afstringog søger derefter baglæns fra den resulterende position. -
occurrenceer et heltal, der angiver hvilken forekomst afstringOracle skal søge efter. Værdien afoccurrenceskal være positiv.
Både string og substring kan være en hvilken som helst af datatyperne CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB eller NCLOB. Den returnerede værdi er af NUMBER datatype.
Både position og occurrence skal være af datatype NUMBER eller en hvilken som helst datatype, der implicit kan konverteres til NUMBER, og skal opløses til et heltal. Standardværdierne for både position og occurrence er 1, hvilket betyder, at Oracle begynder at søge på det første tegn i string for den første forekomst af substring. Returværdien er relativ til begyndelsen af string uanset værdien af position og udtrykkes med tegn. Hvis søgningen mislykkes (hvis substring ikke vises occurrence gange efter position af string), så er returværdien 0.
Se også:
Tabel 2-10, “Implicit Type Conversion Matrix” for mere information om implicit konvertering
Eksempler
Følgende eksempel søger i strengen CORPORATE FLOOR, der begynder med det tredje tegn, for strengen “OR“. Den returnerer positionen i CORPORATE FLOOR hvor den anden forekomst af “OR” begynder :
SELECT INSTR("CORPORATE FLOOR","OR", 3, 2) "Instring" FROM DUAL; Instring---------- 14
I det næste eksempel tæller Oracle tilbage fra det sidste tegn til det tredje tegn fra slutningen, hvilket er det første O i FLOOR. Oracle søger derefter bagud efter den anden forekomst af OR og finder ud af, at denne anden forekomst begynder med det andet tegn i søgestrengen:
SELECT INSTR("CORPORATE FLOOR","OR", -3, 2)"Reversed Instring" FROM DUAL; Reversed Instring----------------- 2
Det næste eksempel antager et databytes-tegnsæt med dobbelt byte.
SELECT INSTRB("CORPORATE FLOOR","OR",5,2) "Instring in bytes" FROM DUAL;Instring in bytes----------------- 27