Slovník | Vyhledávání | Mapa webu
 
Základy informatiky pro biologyDatabázové systémy v biomedicíně Funkce a operátory v SQL Funkce Textové funkce

Logo Matematická biologie

Textové funkce

Databáze nabízí také řadu funkcí pro práci s textovými řetězci. Mezi nejpoužívanější a nejrozšířenější patří funkce uvedené v tabulce 4.

Tab. 4: Funkce pro práci s textem

Název funkce Popis funkce
SUBSTR (text, od, počet) Vrací podřetězec textu dle pozice
INSTR (text, subtext) Hledání podřetězce v textu, vrací pozici nalezeného podřetězce (pouze ORACLE)
STRPOS (text, subtext) Obdoba INSTR (POSTGRESQL)
LOWER (text), UPPER (text) Převede text na malá, resp. velká písmena
INITCAP (text) Převede první písmeno slov na velké písmeno, ostatní na malá
LTRIM (text), RTRIM (text) Odstranění mezer (nežádoucích znaků) z textu (zleva, zprava)
REPLACE (text, puvodni, nove) Nahrazení podřetězce za jiný
TRANSLATE (text, nahradit_co, nahradit_cim) Nahrazení po znacích
LENGHT (text) Vrací délku textu ve znacích

Pokud chceme z textu získat určitý podřetězec, použijeme funkci SUBSTR. Parametrem je zpracovávaný řetězec, druhým parametrem je pořadí prvního znaku, který chceme extrahovat, třetím nepovinným parametrem je počet znaků, které chceme extrahovat. Pokud chceme zkrátit řetězec na prvních 5 znaků, použijeme funkci SUBSTR následovně:

SELECT SUBSTR('dlouhý text', 1, 5) FROM DUAL;

Funkce, která prohledává text na výskyt specifikovaného podřetězce, se jmenuje v ORACLE INSTR, v PGSQL pak STRPOS. Parametrem je prohledávaný řetězec a hledaný text, výsledkem je pořadí prvního znaku nalezeného řetězce nebo nula, pokud podřetězec není nalezen.

Pokud chceme získat z textu určitou část, která je oddělena definovaným symbolem, použijeme kombinaci funkcí SUBSTR a INSTR.

SELECT SUBSTR('Výsledek:67',INSTR('Výsledek:67',':')+1) FROM DUAL

Funkce INSTR nejprve nalezne symbol ':', vrátí pořadí tohoto znaku, který předá funkci SUBSTR. Ta extrahuje text za tímto znakem. Jednička je připočtena proto, aby výsledek neobsahoval úvodní dvojtečku.  

Funkce, která vrátí počet znaků v řetězci, se jmenuje v ORACLE i PGSQL LENGTH. Parametrem je analyzovaný řetězec.

Při práci s textem je často potřebné sjednocení velikosti písmen. Celý text můžeme snadno převést na malá písmena (LOWER) nebo velká písmena (UPPER). Tyto funkce využijeme, pokud budeme chtít pracovat s řetězci bez rozlišení velikosti písmen. Funkci INITCAP využijeme, pokud chceme, aby každé slovo řetězce začínalo velkým písmenem, například v případě vlastních jmen.

SELECT INITCAP('klIMeŠ daNIel') FROM DUAL -- výsledek je Klimeš Daniel

Dvojice funcí LTRIM a RTRIM umožňuje odstranit nežadoucí znaky z levé, resp. z pravé strany řetězce. Defaultně se odstraňují mezery, pokud chceme odstranit specifikované znaky, uvedeme jejich výčet jako druhý parametr.

SELECT RTRIM('text ++++   ', '+ ') FROM DUAL

Dotaz odstraní zprava znaky mezer a plus, výsledkem je 'text'.

K nahrazování znaků v řetězcích slouží funkce REPLACE a TRANSLATE. Pomocí REPLACE nahradíme podřetězec definovaný v druhém parametru za text uvedený jako třetí parametr. Pokud neuvedeme třetí parametr, bude nalezený podřetězec odstraněn. Funkce REPLACE defaultně nahrazuje všechny nalezené podřetězce. Funkce TRANSLATE slouží pro nahrazení jednotlivých znaků. Druhým jejím parametrem je seznam nahrazovaných znaků, třetí parametr pak obsahuje seznam znaků nahrazujících. Nahrazuje se vždy první znak druhého parametru za první znak třetího parametru, druhý za druhý, atd. Pokud chybí třetí parametr, jsou znaky druhého parametru odstraněny. Funkce se využívá, např. pokud chceme odstranit českou diakritiku z textového řetězce.

SELECT TRANSLATE('žluťoučký kůň','žťčýůň','ztcyun') FROM DUAL -- výsledek je 'zlutoucky kun'

 
vytvořil Institut biostatistiky a analýz Lékařské fakulty Masarykovy univerzity