Majklsův Internetový Brloh

 



Funce pro práci s řetězci

Dnes pro vás mám něco málo o funkcích pro práci s řetězcem. Taktéž v anglickém originálu tuto položku naleznete.
ASCII(text)
Funkce vrací číselnou hodnotu prvního znaku vlevo v textu. Jestliže je vstupní hodnota NULL, vrací NULL. Nepracuje s multibajtem.
select ASCII('dax');
-> 100
select ASCII('řč');
-> 248
select ASCII('43');
-> 52
select ASCII(43);
-> 52
select ASCII(NULL);
-> NULL
ORD(text)
Tato funkce je podobná funkci ASCII(), s tím rozdílem, že pracuje s multibajtovými řetězci.
CONV(cislo, vstupni_soustava,vystupni_soustava)
Funkce konveruje čísla mezi různými soustavami, od dvojkové až po šestatřicítkovou. To, jestli bude mínus vyjádřeno pomocí (-) nebo jestli bude "v čísle", lze ovlivnit přítomností/absencí znaménka (-) v názvu soustavy.
select CONV(40,10,-18);
-> 24
select CONV(40,10,18);
-> 24
select CONV(-40,10,-18);
-> -24
select CONV(-40,10,18);
-> 2D3FGB0B9CG4BD0C
select CONV(-40,10,36);
-> 3W5E11264SGRC
BIN(int) - Vrací číslo v binární soustavě.
OCT(int) - Vrací číslo v osmičkové soustavě.
HEX(int) - Vrací číslo v šesnáctkové soustavě.

CHAR(cislo1,cislo2,cislo3,...)
Tato funkce vytvoří z daných čísel znaky. Výstupem je řetězec těchto znaků. NULL hodnoty ukončují překlad. Neceločíselné hodnoty jsou zaokrouhlovány na celá čísla.
mysql> select CHAR(109,97,106,107,108,"115");
+--------------------------------+
| CHAR(109,97,106,107,108,"115") |
+--------------------------------+
| majkls |
+--------------------------------+
1 row in set (0.00 sec)

mysql> select CHAR(109,97,106,NULL,107,108,"115");
+-------------------------------------+
| CHAR(109,97,106,NULL,107,108,"115") |
+-------------------------------------+
| maj |
+-------------------------------------+
1 row in set (0.00 sec)

mysql> select CHAR(109,97,106.7,107,108,"115");
+----------------------------------+
| CHAR(109,97,106.7,107,108,"115") |
+----------------------------------+
| makkls |
+----------------------------------+
1 row in set (0.00 sec)

mysql> select CHAR(109,97,106.4,107,108,"115");
+----------------------------------+
| CHAR(109,97,106.4,107,108,"115") |
+----------------------------------+
| majkls |
+----------------------------------+
1 row in set (0.00 sec)
CONCAT(text1,text2,text3,...)
Funkce vrací sloučené řetězce, které jí byly předány jako parametry. V případě, že se mezi parametry objeví NULL řetězec, funkce vrací NULL.
select CONCAT("My","SQL");
-> MySQL
CONCAT_WS(text, text1,text2,...,textN)
Tato funkce je podobná funkci CONCAT(), s tím, že řetězce spojuje pomocí řetězce text. Navíc produkuje výstup, i když se v parametrech objeví NULL. Pracuje podobně jako implode v PHP.
mysql> select CONCAT_WS("+","Apache","MySQL","PHP");
+---------------------------------------+
| CONCAT_WS("+","Apache","MySQL","PHP") |
+---------------------------------------+
| Apache+MySQL+PHP |
+---------------------------------------+

mysql> select CONCAT_WS("+","Apache",NULL,"MySQL","PHP");
+--------------------------------------------+
| CONCAT_WS("+","Apache",NULL,"MySQL","PHP") |
+--------------------------------------------+
| Apache+MySQL+PHP |
+--------------------------------------------+
BIT_LENGTH(retezec)
Funkce vrací délku řetězce v bitech. Přidána v MySQL v. 4.0.2.
LENGTH(retezec), OCTET_LENGTH(retezec), CHARACTER_LENGTH(retezec)
Vrací délku řetězce v bajtech. Pokud chcete zjistit déku multibajtového řetězce, použijte raději CHAR_LENGTH. Jestliže má řetězec hodnotu NULL, vrací NULL.
CHAR_LENGTH(retezec)
Vrací počet znaků v řetězci. Funguje i pro multibajty.
LOCATE(retezec,text), POSITION(retezec IN text), INSTR (text, retezec)
Vrací 1. pozici řetězce retezec v textu text. Pozice je vrácena jako celočíselná hodnota. Funkce INSTR má na rozdíl od dvouargumentové verze LOCATE pouze prohozené argumenty. mb-safe.
LOCATE(retezec,text,pos)
Vrací 1. pozici řetězce retezec v textu text za pozicí pos.
LPAD(str,len,padstr)
Funkce zarovná řetězec zleva pomocí řetězce str.
mysql> select LPAD("text",10,"aei");
+-----------------------+
| LPAD("text",10,"aei") |
+-----------------------+
| aeiaeitext |
+-----------------------+
1 row in set (0.05 sec)
RPAD(str,len,padstr)
Funkce zarovná řetězec zprava pomocí řetězce str na délku len.
LEFT(retezec,n)
Vrací n znaků zleva. mb-safe.
mysql> select LEFT("abcdefgh",4);
+--------------------+
| LEFT("abcdefgh",4) |
+--------------------+
| abcd |
+--------------------+
1 row in set (0.00 sec)
RIGHT(retezec,n)
Vrací n znaků zprava. mb-safe.
mysql> select RIGHT("abcdefgh",4);
+---------------------+
| RIGHT("abcdefgh",4) |
+---------------------+
| efgh |
+---------------------+
1 row in set (0.00 sec)
SUBSTRING(str,pos[,len]), SUBSTRING(str FROM pos [FOR len])
Funkce je podobná funkci substr() v PHP. Vrací část řetězce od pozice pos. Pokud je zadán parametr len, bude vrácen řetězec o délce len. mb-safe.
select SUBSTRING("slovíčko",4);
-> víčko

select SUBSTRING("slovíčko",4,2);
-> ví
SUBSTRING_INDEX(retezec,oddelovac, n)
Vrací část řetězce retezec po místo, kde je nalezen n-tý výskyt řetězce oddelovac. Při záporné hodnotě jsou oddělovače počítány od prava. mb-safe.
select SUBSTRING_INDEX("www.sua.bla.uf.cz",".",2);
-> www.sua

select SUBSTRING_INDEX("www.sua.bla.uf.cz",".",-2);
-> uf.cz
LTRIM(str) - odstraní bílé znaky z leva od slova. mb-safe.
RTRIM(str) - odstraní bílé znaky z prava od slova. mb-safe.
mysql> select LTRIM("      toto je test");
-> toto je test

mysql> select RTRIM("toto je test ");
-> toto je test
TRIM([BOTH | LEADING | TRAILING] [retezec] FROM] str)
Vrací řetězec str zbavený řetězce retezec (LEADING - zleva, TRAILING - zprava, BOTH - z obou stran). BOTH je výchozí. Jestliže není zadán retezec, pak jsou odstraňovány bílé znaky.
mysql> select TRIM(" něco   ");
-> 'něco'

mysql> select TRIM(LEADING "a" FROM "aaaaamas to!");
-> mas to!

mysql> select TRIM(BOTH "o" FROM "ooo tak to jooooo");
-> tak to j

mysql> select TRIM(TRAILING "o" FROM "ooo tak to jooooo");
-> ooo tak to j
SOUNDEX(retezec)
Funkce vrací soundex řetězce. Znaky mimo a-z (tj. znaky s diakritikou, azbuka a další) jsou upraveny jako samohlásky. Pro lepší a podrobnější info o této funkci navštivte anglický MySQL manuál.

SPACE(n) - Vrací n mezer.
REPLACE(v_retezci, retezec, retezcem)
Funkce nahradí výskyty řetězce retezec v řetězci v_retezci řetězcem retezcem. Je podobná PHPčkovské funkci str_replace. mb-safe.
mysql> select REPLACE("Jablko je zelenina.","zelenina","ovoce");
-> Jablko je ovoce.
REPEAT(retezec,n) - Opakuje retezec n-krát za sebou.
mysql> select REPEAT("Test",3);
-> TestTestTest
REVERSE(retezec) - Přečte retezec "pozpátku". mb-safe.
mysql> select REVERSE("Kobyla má malý bok");
-> kob ýlam ám alyboK
INSERT(retezec,pozice,n, retezec_k_vlozeni)
Vloží řetězec retezec_k_vlozeni od pozice, v původním řetězci smaže n znaků. retezec_k_vlozeni je vkládán celý, bez ohledu na n. mb-safe.
mysql> select INSERT("Toto je test",6,2,"není");
-> Toto není test
ELT(n,retezec1,retezec2,retezec3,...) - Vrací řetězec, který je n-tý v pořadí.
FIELD( retezec, retezec1, retezec2, retezec3,...) - Vrací pořadí retezce mezi řetězci. Jestliže jej nenajde, vrací 0. Funkce je citlivá na velikost písmen.
mysql> select ELT(2, "toto","je","test");
-> je

mysql> select FIELD("je", "toto","je","test");
-> 2
FIND_IN_SET(retezec,seznam_retezcu)
Najde retezec mezi řetězci v seznam_retezcu. Jednotlivé řetězce jsou odděleny čárkou. Při použití s typem set je funkce optimailzována pro bitovou aritmetiku.
mysql> select FIND_IN_SET("t","t,a,k,j,o");
-> 1

mysql> select FIND_IN_SET("t","t,a,k,t,o,jo");
-> 1
MAKE_SET(bity, retezec1, retezec2,...)
Vrací set (řetězec obsahující řetězce oddělené čárkou) skládající se z řetězců vybraných pomocí bity.
řetězec: retezec1 retezec2 retezec3 ...
bit: 1. bit 2. bit 3. bit ...
dekadická hodnota 1 2 4 ...
mysql> select MAKE_SET(1 | 8,"toto","je","maly","testik");
-> toto,testik
EXPORT_SET(bity,retezec_on,retezec_off,oddelovac,pocet_bitu)
Funkce vytvoří SET, který bude dlouhý pocet_bitu (výchozí délka je 64 bitů), kde budou bity nastaveny na on. retezec_on představuje řetězec, který bude vrácen, když je bit nastaven na 1, oddelovac odděluje řetězce.
mysql> select EXPORT_SET(1 | 8,"on","off",";",4);
-> on;off;off;on

mysql> select EXPORT_SET(1 | 4,"on","off",";",4);
-> on;off;on;off
LCASE(retezec), LOWER(retezec)
Konvertuje řetězec do malých písmen (podobné funci strtolower v PHP). mb-safe. Výchozí znaková stránka je ISO-8859-1.
UCASE(retezec), UPPER(retezec)
Konvertuje řetězec do velkých písmen (podobné funci strtoupper v PHP). mb-safe. Výchozí znaková stránka je ISO-8859-1.
LOAD_FILE(soubor)
Funkce načte soubor do řetězce. Příklad převzat z MySQL manuálu.
mysql> UPDATE table_name
SET blob_column=LOAD_FILE("/tmp/picture")
WHERE id=1;
Tak to je pro tento díl vše.


mb-safe - Funkce umí pracovat s multibajtovými znaky (3.23.40).

Komentáře ke článku

NadpisAutorVloženo
Jen ty chybky v češtině...žádný rejpal ;)16. dubna 2009 18:25:37
chybymajkls18. dubna 2009 23:05:52

Zobraz vše

Nový příspěvek

 

 

Stránka vygenerována za 0.007983s, © Majkls, ICQ#: 162974419, optimalizováno pro: ELinks, Firefox, Operu, Konqueror. Špatně se zobrazují v IE. XHTML 1.0 valid. Powered by PřeTel