| Rubrika Pre začiatočníkov
Výber časti textu z MySQL databázy – Substring_index
Výber nejakej časi textu z MySQL databázy – napríklad pre potreby
kvázi perexu sa dá riešiť či už na úrovni PHP, string funkciami, alebo na
úrovni MySQL pomocou funkcie SUBSTRING_INDEX.
Kvôli výkonu je rozhodne lepšie spoľahnúť sa na databázu a vytiahnuť
z nej len tie dáta, ktoré potrebujeme. Zbytočne by sme predsa odtiaľ
ťahali celý text, keď z neho potrebujeme len kúsok.
Na takéto účely je MySQL DB pripravená.
MySQL FUNKCIA SUBSTRING_INDEX
Syntax MySQL funkcie substring_index je nasledovná.
SELECT SUBSTRING_INDEX(nazov_stlpca, '/', 2);
Prvý parameter znamená reťazec. Či už tam dáte názov stĺpca tabuľky, z ktorej chceme podreťazec vybrať, alebo čokoľvek je na vás. Druhý parameter je delimiter – oddeľovací znak, na základe ktorého budeme deliť reťazec. V našom prípade je to lomka. Tretí parameter je počet opakovaní delimitera, ktorý má byť hranicou reťazca.
Pozrime sa na príklad
// obsah stĺpca "URL" = "URL/ADRESA/NEJAKÉHO/ZÁZNAMU mysql> SELECT SUBSTRING_INDEX(URL, '/', 2); // takýto select by vrátil string v podobe "URL/ADRESA" (od začiatku po druhý výskyt delimitera)
A ako by to vyzeralo v reálnej praxi?
<? $q= "SELECT id,SUBSTRING_INDEX(text, ' ', 50) AS perex FROM tabulka ORDER BY id DESC"; $query=mysql_query($q); while($row=mysql_fetch_assoc($query)) { echo $row['perex']; } ?>
Takýto zápis vyberie z databázy všetky záznamy, zoradí ich zostupne podľa ID a pod asociatívnym kľúčom „perex“ sa bude skrývať úryvok prvých 50 slov zo stĺpca „text“, kde predpokladajme text akéhosi článku.
// delimiterom v tomto prípade je medzera. // String bude useknutý na 50. opakovaní medzery, čiže po päťdesiatom slove. SUBSTRING_INDEX(text, ' ', 50) AS perex
MySQL FUNKCIA SUBSTRING
Okrem SUBSTRING_INDEX, MySQL databáza pozná aj funkciu SUBSTRING,
ktorá je v zásade ekvivalentom k PHP funkcii substr().
Narozdiel od substring_indexu nedokáže pracovať s delimitermi –
oddeľovačmi, ale dokáže len vyseknúť špecifikovaný kúsok reťazca, na
základe poradia znakov.
mysql> SELECT SUBSTRING('www.phpblog.sk',2,4); // výstup by bol "ww.p" (4 znaky, začínajúce od druhého znaku v poradí)
Príklady syntaxe sú dobre spracované na domovskej stránke http://dev.mysql.com/…nctions.html#….
Osobne radšej využívam funkciu substring_index, pretože
umožňuje prácu s delimitermi a teda „rozsekanie“ reťazca na základe
všemožných pravidiel.
Tomáš Mašek
naspäť
prispieť do diskusie [0]
Vyhľadávanie
Viac z rubriky
Pridať komentár



