INSTR (Čeština)
Syntaxe
Popis illustration instr.gif
Účel
INSTR funkce vyhledávají string substring. Funkce vrací celé číslo označující pozici znaku v string, který je prvním znakem tohoto výskytu. INSTR vypočítá řetězce pomocí znaků definovaných ve vstupní znakové sadě. INSTRB používá místo znaků bajty. INSTRC používá úplné znaky Unicode. INSTR2 používá kódové body UCS2. INSTR4 používá kódové body UCS4.
-
positionje nenulové celé číslo označující znakstringkde Oracle Database začne hledat. Pokud jepositionzáporné, Oracle počítá zpětně od koncestringa potom hledá zpět z výsledné polohy. -
occurrenceje celé číslo označující, který výskytstringby Oracle měl vyhledat. Hodnotaoccurrencemusí být kladná.
Oba string a substring může být kterýkoli z datových typů CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB nebo NCLOB. Vrácená hodnota je NUMBER datový typ.
position a occurrence musí být datového typu NUMBER nebo jakéhokoli datového typu, který lze implicitně převést na NUMBER, a musí být převedeno na celé číslo. Výchozí hodnoty position a occurrence jsou 1, což znamená, že Oracle začne hledat první znak string pro první výskyt substring. Návratová hodnota je relativní k začátku string bez ohledu na hodnotu position a je vyjádřena ve znacích. Pokud je vyhledávání neúspěšné (pokud se substring neobjeví occurrence krát za position znakem string), pak je návratová hodnota 0.
Viz také:
Tabulka 2-10, „Implicitní matice převodu typu“ Další informace o implicitní konverzi
Příklady
Následující příklad prohledá řetězec CORPORATE FLOOR začínající třetím znakem pro řetězec „OR„. Vrátí pozici v CORPORATE FLOOR, kde začíná druhý výskyt „OR“ :
SELECT INSTR("CORPORATE FLOOR","OR", 3, 2) "Instring" FROM DUAL; Instring---------- 14
V dalším příkladu Oracle počítá zpět od posledního znaku ke třetímu znaku od konce, což je první O v FLOOR. Oracle poté hledá zpětně druhý výskyt OR a zjistí, že tento druhý výskyt začíná druhým znakem ve vyhledávacím řetězci:
SELECT INSTR("CORPORATE FLOOR","OR", -3, 2)"Reversed Instring" FROM DUAL; Reversed Instring----------------- 2
Následující příklad předpokládá dvoubajtovou znakovou sadu databáze.
SELECT INSTRB("CORPORATE FLOOR","OR",5,2) "Instring in bytes" FROM DUAL;Instring in bytes----------------- 27