Crmgo Blog

MySQL Práce s řetězci

MySQL Práce s řetězci

Práce s řetězci ASCII(str string) BIN(int integer) CHAR(int integer, ...) CHARACTER_LENGTH(str string) CHAR_LENGTH(str string) CONCAT(str1 string, str2 string, ...) CONCAT_WS(separator string, str1 string, str2 string, ...) CONV(int_or_str integer nebo string, from_base…

MySQL Práce s řetězci

Práce se řetězci

ASCII(str řetězec)
BIN(int celé číslo)
CHAR(int celé číslo, ...)
CHARACTER_LENGTH(str řetězec)
CHAR_LENGTH(str řetězec)
CONCAT(str1 řetězec, str2 řetězec,...)
CONCAT_WS(separator řetězec, str1 řetězec, str2 řetězec,...)
CONV(int_or_str celé číslo nebo řetězec, from_base celé číslo, to_base celé číslo)
ELT( N celé číslo, str1 řetězec, str2 řetězec, str3 řetězec,...)
EXPORT_SET( bits, on řetězec , off řetězec, [separator znak, [number_of_bits celé číslo]])
FIELD( str řetězec, str1 řetězec, str2 řetězec, str3 řetězec,...)
FIND_IN_SET( str řetězec, strlist řetězec )
HEX(int_or_str řetězec nebo celé číslo)
INSERT( str řetězec, pos celé číslo, len celé číslo, newstr řetězec )
INSTR( str řetězec, substr řetězec)
LCASE( str řetězec ) řetězec
LEFT( str řetězec, len celé číslo)
LENGTH(str řetězec)
LOAD_FILE( file_name řetězec )
LOCATE(substr řetězec, str řetězec, pos celé číslo)
LOWER( str řetězec )
LPAD( str řetězec, len celé číslo, padstr řetězec)
LTRIM( str řetězec )
MAKE_SET( bits, str1 řetězec , str2 řetězec ,...)
MID(str řetězec, pos celé číslo, len celé číslo)
OCT(int celé číslo)
OCTET_LENGTH(str řetězec)
LOCATE(substr řetězec, str řetězec)
ORD(str řetězec)
POSITION(substr řetězec IN str řetězec)
REPLACE( str řetězec, from_str řetězec, to_str řetězec)
REPEAT( str řetězec, count celé číslo)
REVERSE( str řetězec )
RIGHT( str řetězec, len celé číslo)
RPAD( str řetězec, len celé číslo, padstr řetězec)
RTRIM( str řetězec )
SOUNDEX( str řetězec )
SPACE( N celé číslo )
SUBSTRING(str řetězec FROM pos celé číslo FOR len celé číslo)
SUBSTRING_INDEX( str řetězec, delim řetězec, count celé číslo)
TRIM( [[BOTH | LEADING | TRAILING] [remstr] řetězec FROM] str řetězec )
UCASE( str řetězec )
UPPER( str řetězec )

Každá funkce pracující se řetězci vrátí NULL, pokud délka výsledného řetězce překročí hodnotu nastavenou v serverovém parametru max_allowed_packet.

 

integer ASCII(str string)

Vrací ASCII kód prvního levého znaku řetězce str. Vrací 0, pokud je řetězec str prázdný. Vrací NULL, pokud řetězec str neexistuje.

Příklady:

mysql> select ASCII('2');
        -> 50
mysql> select ASCII(2);
        -> 50
mysql> select ASCII('dx');
        -> 100

Viz také ORD().

 

integer ORD(str string)

Pokud je první levý znak řetězce str vícebytový, vrací jeho kód ve formátu: ((první bajt ASCII kód)*256+(druhý bajt ASCII kód))[*256+třetí bajt ASCII kód...].

Pokud první levý znak řetězce str není vícebytový, pak se funkce chová stejně jako funkce ASCII() – vrací ASCII kód prvního levého znaku řetězce str.

Příklady:

mysql> select ORD('2');
        -> 50

Viz také ASCII().

 

string CONV(int_or_str integer or string, from_base integer, to_base integer)

Výkonná funkce pro převod čísla (int_or_str ) z jedné číselné soustavy (from_base) do jiné číselné soustavy (to_base). Vrací NULL, pokud jsou argumenty NULL. Minimální hodnota .._base je 2, maximální je 36.

Příklady:

mysql> select CONV("a",16,2);
        -> '1010'
mysql> select CONV("6E",18,8);
        -> '172'
mysql> select CONV(-17,10,-18);
        -> '-H'
mysql> select CONV(10+"10"+'10'+0xa,10,10);
        -> '40'

Viz také BIN(), OCT(), HEX().

 

string BIN(int integer)

Vrací binární hodnotu argumentu int. Funguje stejně jako CONV(int,10,2). Vrací NULL, pokud je argument int NULL.

Příklady:

mysql> select BIN(12);
        -> '1100'

Viz také CONV().

 

string OCT(int integer)

Vrací oktální hodnotu argumentu int. Funguje stejně jako CONV(int,10,8). Vrací NULL, pokud je argument int NULL.

Příklady:

mysql> select OCT(12);
        -> '14'

Viz také CONV().

 

string HEX(int_or_str string or integer)

Vrací hexadecimální hodnotu argumentu int_or_string. Funguje stejně jako CONV(int,10,16). Vrací NULL, pokud je argument int_or_string NULL.

Příklady:

mysql> select HEX(255);
        -> 'FF'
mysql> select HEX("abc");
        -> 616263
mysql> select 0x616263;
        -> "abc"

Viz také CONV().

 

string CHAR(int integer, ...)

Vrací řetězec znaků určených kódem/kódy ASCII. Hodnota NULL je přeskočena.

Příklady:

mysql> select CHAR(77,121,83,81,'76');
        -> 'MySQL'
mysql> select CHAR(77,77.3,'77.3');
        -> 'MMM'

Viz také ASCII(), ORD().

 

string CONCAT(str1 string, str2 string,...)

Spojuje řetězce. Výsledkem je řetězec složený z argumentů. Vrátí NULL, pokud je některý z argumentů NULL. Může mít více než 2 argumenty. Číselné argumenty jsou převedeny na příslušné řetězce.

Příklady:

mysql> select CONCAT('My', 'S', 'QL');
        -> 'MySQL'
mysql> select CONCAT('My', NULL, 'QL');
        -> NULL
mysql> select CONCAT(14.3);
        -> '14.3'

Viz také CONCAT_WS().

 

string CONCAT_WS(separator string, str1 string, str2 string,...)

Spojuje řetězce podobně jako funkce CONCAT(), ale s oddělovačem separator, který je vložen mezi řetězcové argumenty. Pokud je separator NULL, bude výsledkem NULL. Funkce přeskočí ostatní argumenty, pokud mají hodnotu NULL.

Příklady:

mysql> select CONCAT_WS(",","First name","Second name","Last Name");
       -> 'First name,Second name,Last Name'
mysql> select CONCAT_WS(",","First name",NULL,"Last Name");
       -> 'First name,Last Name'

Viz také CONCAT().

 

integer LENGTH(str string)

Funkce vrací délku řetězce str.

Příklady:

mysql> select LENGTH('text');
        -> 4

Poznámka: vícebytové znaky jsou počítány funkcí CHAR_LENGTH().

Viz také OCTET_LENGTH(), CHAR_LENGTH(), CHARACTER_LENGTH().

 

integer OCTET_LENGTH(str string)

Funkce vrací délku řetězce str.

Příklady:

mysql> select OCTET_LENGTH('text');
        -> 4

Poznámka: vícebytové znaky jsou počítány funkcí CHAR_LENGTH().

Viz také LENGTH(), CHAR_LENGTH(), CHARACTER_LENGTH().

 

integer CHAR_LENGTH(str string)

Funkce vrací délku řetězce str. Podporuje vícebytové znaky.

Příklady:

mysql> select CHAR_LENGTH('text');
        -> 4

Viz také LENGTH(), OCTET_LENGTH(), CHARACTER_LENGTH().

 

integer CHARACTER_LENGTH(str string)

Funkce vrací délku řetězce str.

Příklady:

mysql> select CHARACTER_LENGTH('text');
        -> 4

Poznámka: vícebytové znaky jsou počítány funkcí CHAR_LENGTH().

Viz také LENGTH(), OCTET_LENGTH(), CHAR_LENGTH().

 

integer POSITION(substr string IN str string)

Vrací pozici prvního výskytu podřetězce substr v řetězci str. Vrátí 0, pokud substr nebyl v řetězci str nalezen. Podporuje vícebytové znaky.

Příklady:

mysql> select POSITION('bar', 'foobarbar');
        -> 4
mysql> select POSITION('xbar', 'foobar');
        -> 0

Viz také INSTR().

 

integer LOCATE(substr string, str string, pos integer)

LOCATE(substr string, str string) vrací pozici prvního výskytu podřetězce substr v řetězci str. Pokud se substr v řetězci str nenajde, vrací 0. LOCATE(substr string, str string, pos integer) vrací pozici prvního výskytu podřetězce substr v řetězci str, a to počínaje pozicí pos. Pokud se substr v řetězci str nenajde (s ohledem na pozici, samozřejmě), vrací 0. Podporuje vícebajtové znaky.

Příklady:

mysql> select LOCATE('bar', 'foobarbar',5);
        -> 7
mysql> select LOCATE('bar', 'foobarbar');
        -> 4
mysql> select LOCATE('xbar', 'foobar');
        -> 0

Podívejte se také na INSTR(), POSITION().

 

integer INSTR( str string, substr string)

Vrací pozici prvního výskytu podřetězce substr v řetězci str. Pokud se substr v řetězci str nenajde (s ohledem na pozici, samozřejmě), vrací 0. Podporuje vícebajtové znaky. Je to ekvivalent funkce LOCATE(), pouze s prohozenými argumenty.

Příklady:

mysql> select INSTR('foobarbar', 'bar');
        -> 4
mysql> select INSTR('xbar', 'foobar');
        -> 0

Podívejte se také na LOCATE(), POSITION().

 

string LPAD( str string, len integer, padstr string)

Vrací řetězec str, ke kterému přidá na začátek řetězec padstr a upraví celkový počet znaků ve vráceném řetězci na hodnotu len. Pokud je len větší než součet délek obou řetězců, rozdíl je doplněn opakováním řetězce padstr.

Příklady:

mysql> select LPAD('hi',4,'??');
        -> '??hi'

Podívejte se také na RPAD().

 

string RPAD( str string, len integer, padstr string)

Vrací řetězec str, ke kterému přidá na konec řetězec padstr a upraví celkový počet znaků ve vráceném řetězci na hodnotu len. Pokud je len větší než součet délek obou řetězců, rozdíl je doplněn opakováním řetězce padstr.

Příklady:

mysql> select RPAD('hi',5,'?');
        -> 'hi???'

Podívejte se také na LPAD().

 

string LEFT( str string, len integer)

Vrací prvních len znaků z řetězce str. Podporuje vícebajtové znaky.

Příklady:

mysql> select LEFT('foobarbar', 5);
        -> 'fooba'

Podívejte se také na RIGHT(), SUBSTRING(), MID(), SUBSTRING_INDEX().

 

string RIGHT( str string, len integer)

Vrací posledních len znaků z řetězce str. Podporuje vícebajtové znaky.

Příklady:

mysql> select RIGHT('foobarbar', 4);
        -> 'rbar'

Podívejte se také na LEFT(), SUBSTRING(), MID(), SUBSTRING_INDEX().

 

string SUBSTRING( str string, pos integer, len integer )

string SUBSTRING(str string FROM pos integer FOR len integer)

Vrací podřetězec řetězce str o délce len znaků začínající na pozici pos. Podporuje vícebajtové znaky. Varianta s „FROM“ se používá v syntaxi ANSI SQL92. U funkce SUBSTRING(), pokud není uveden argument len, vrací se celý podřetězec řetězce str od pozice pos.

Příklady:

mysql> select SUBSTRING('Quadratically',5,6);
        -> 'ratica'
mysql> select SUBSTRING('Quadratically',5);
        -> 'ratically'
mysql> select SUBSTRING('foobarbar' FROM 4);
        -> 'barbar'

Viz také LEFT(), RIGHT(), SUBSTRING_INDEX().

 

string MID(str string, pos integer, len integer)

Vrací podřetězec řetězce str o délce len znaků začínající na pozici pos. Podporuje vícebajtové znaky. Varianta s „FROM“ se používá v syntaxi ANSI SQL92. U funkce SUBSTRING(), pokud není uveden argument len, vrací se celý podřetězec řetězce str od pozice pos.

Příklady:

mysql> select MID('Quadratically',5,6);
        -> 'ratica'
mysql> select MID('Quadratically',5);
        -> 'ratically'
mysql> select MID('foobarbar' FROM 4);
        -> 'barbar'

Viz také LEFT(), RIGHT(), SUBSTRING_INDEX().

 

string SUBSTRING_INDEX( str string, delim string, count integer)

Vrací celý podřetězec řetězce str od pozice určené oddělovačem delim, který je na pořadí count.

Příklady:

mysql> select SUBSTRING_INDEX('www.mysql.com', '.', 2);
        -> 'www.mysql'
mysql> select SUBSTRING_INDEX('www.mysql.com', '.', -2);
        -> 'mysql.com'

Viz také LEFT(), SUBSTRING(), MID(), RIGHT().

 

string LTRIM( str string )

Vrací řetězec str s odstraněnými mezerami na začátku řetězce. Podporuje vícebajtové znaky.

Příklady:

mysql> select LTRIM('  barbar');
        -> 'barbar'

Viz také TRIM(), RTRIM().

 

string RTRIM( str string )

Vrací řetězec str s odstraněnými mezerami na konci řetězce. Podporuje vícebajtové znaky.

Příklady:

mysql> select RTRIM('barbar   ');
        -> 'barbar'

Viz také TRIM(), LTRIM().

 

string TRIM( [[BOTH | LEADING | TRAILING] [remstr] string FROM] str string )

S jedním argumentem „str“ – vrací řetězec str s odstraněnými mezerami na konci řetězce. Argument „remstr“ určuje znak/podřetězec k odstranění. Podporuje vícebajtové znaky. mysql> select TRIM(' bar '); -> 'bar'

Příklady:

mysql> select TRIM('  bar   ');
        -> 'bar'
mysql> select TRIM(LEADING 'x' FROM 'xxxbarxxx');
        -> 'barxxx'
mysql> select TRIM(BOTH 'x' FROM 'xxxbarxxx');
        -> 'bar'
mysql> select TRIM(TRAILING 'xyz' FROM 'barxxyz');
        -> 'barx'

Viz také RTRIM(), LTRIM().

 

string SOUNDEX( str string )

Vypočítá soundex klíč pro str. Soundex klíč má tu vlastnost, že slova vyslovovaná stejně mají stejný soundex klíč, a to lze využít pro korekci výsledků vyhledávání. Vrací řetězec o délce 4 znaků začínající písmenem A-Z.

Příklady:

mysql> select SOUNDEX('Hello');
        -> 'H400'
mysql> select SOUNDEX('Quadratically');
        -> 'Q36324'

 

string SPACE( N integer )

Vrací řetězec složený z N mezer.

Příklady:

mysql> select SPACE(6);
        -> '      '

Viz také REPEAT().

 

string REPLACE( str string, from_str string, to_str string)

Vrací řetězec str, ve kterém jsou všechny výskyty podřetězce from_str nahrazeny řetězcem to_str. Podporuje vícebajtové znaky.

Příklady:

mysql> select REPLACE('www.websupport.maryan.com.ua', 'w', 'Ww');
        -> 'WwWwWw.Wwebsupport.maryan.com.ua'

 

string REPEAT( str string, count integer)

Vrací řetězec složený z řetězce str opakováného count-krát. Vrátí NULL, pokud je některý z argumentů NULL.

Příklady:

mysql> select REPEAT('MySQL', 3);
        -> 'MySQLMySQLMySQL'

Viz také SPACE().

 

string REVERSE( str string )

Vrací řetězec, ve kterém jsou všechny znaky obráceny od posledního k prvnímu. Viz příklad. Podporuje vícebajtové znaky.

Příklady:

mysql> select REVERSE('abc');
        -> 'cba'

 

string INSERT( str string, pos integer, len integer, newstr string )

Vrací řetězec str s vloženým podřetězcem newstr, počínaje pozicí pos v řetězci str a délky len znaků. Podporuje vícebajtové znaky.

Příklady:

mysql> select INSERT('Quadratic', 3, 4, 'What');
        -> 'QuWhattic'

 

string ELT( N integer, str1 string, str2 string, str3 string,...)

Vrátí str1, pokud N = 1, str2 pokud N = 2, atd. Vrátí NULL, pokud je N menší než 1 nebo větší než počet argumentů.

Příklady:

mysql> select ELT(1, 'ej', 'Heja', 'hej', 'foo');
        -> 'ej'
mysql> select ELT(4, 'ej', 'Heja', 'hej', 'foo');
        -> 'foo'

Viz také FIELD().

 

integer FIELD( str string, str1 string, str2 string, str3 string,...)

Vrátí index (pořadové číslo) řetězce str ze seznamu řetězců str1, str2, str3, ... . Vrátí 0, pokud str nebyla ve seznamu nalezena.

Příklady:

mysql> select FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');
        -> 2
mysql> select FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');
        -> 0

Viz také ELT().

 

integer FIND_IN_SET( str string, strlist string )

Vrací hodnotu od 1 do ..., v závislosti na pozici řetězce str mezi řetězci (podřetězci) v řetězci strlist. Řetězce (podřetězce) v strlist jsou odděleny čárkou „,”. Vrátí 0, pokud str nebyla mezi řetězci v strlist nalezena. Vrátí NULL, pokud je některý z argumentů NULL.

Příklady:

mysql> SELECT FIND_IN_SET('b','a,b,c,d');
        -> 2

Viz také MAKE_SET().

 

string MAKE_SET( bits, str1 string , str2 string ,...)

Vrací jeden z argumentů-řetězců v závislosti na bitovém stavu bits. str1 bude vráceno při bitu 0, str2 při bitu 1, atd.

Příklady:

mysql> SELECT MAKE_SET(1,'a','b','c');
        -> 'a'
mysql> SELECT MAKE_SET(1 | 4,'hello','nice','world');
        -> 'hello,world'
mysql> SELECT MAKE_SET(0,'a','b','c');
        -> ''

viz. také ELT(), FIND_IN_SET().

 

string EXPORT_SET( bits, on string , off string, [separator char, [number_of_bits integer]])

Vrací řetězec, ve kterém je pro každý bit zobrazen stav on nebo off. Stavy jsou odděleny oddělovačem separator.

Příklady:

mysql> select EXPORT_SET(5,'Y','N',',',4)
        -> Y,N,Y,N

 

string LCASE( str string ) string

Vrací řetězec str, ve kterém nahradí všechna velká písmena malými. Podporuje vícebajtové znaky. (Ve výchozím nastavení ISO-8859-1 Latin1).

Příklady:

mysql> select LCASE('QUADRATICALLY');
        -> 'quadratically'

viz. také UCASE(), UPPER(), LCASE(), LOWER().

 

string LOWER( str string )

Vrací řetězec str, ve kterém nahradí všechna velká písmena malými. Podporuje vícebajtové znaky. (Ve výchozím nastavení ISO-8859-1 Latin1).

Příklady:

mysql> select LOWER('QUADRATICALLY');
        -> 'quadratically'

viz. také UCASE(), UPPER(), LCASE(), LOWER().

 

string UCASE( str string )

Vrací řetězec str, ve kterém nahradí všechna malá písmena velkými. Podporuje vícebajtové znaky. (Ve výchozím nastavení ISO-8859-1 Latin1).

Příklady:

mysql> select UCASE('Hej');
        -> 'HEJ'

viz. také UCASE(), UPPER(), LCASE(), LOWER().

 

string UPPER( str string )

Vrací řetězec str, ve kterém nahradí všechna malá písmena velkými. Podporuje vícebajtové znaky. (Ve výchozím nastavení ISO-8859-1 Latin1).

Příklady:

mysql> select UPPER('Hej');
        -> 'HEJ'

viz. také UCASE(), UPPER(), LCASE(), LOWER().

 

string LOAD_FILE( file_name string )

Čte soubor a vrací jeho obsah jako řetězec. file_name je úplná cesta k souboru na serveru. Je třeba dbát na fyzickou existenci souboru a odpovídající oprávnění skriptu k jeho přístupu. Soubor nesmí být větší než hodnota parametru max_allowed_packet. V případě problémů (např. neexistující soubor) vrací NULL.

Poznámka: příspěvek mohl vzniknout s pomocí AI a lidskou redakcí. Odpovědný: Dmytro Lomaka, Kaltenkirchen.