Funções String
Funções string retornam NULL
se o tamanho do resultado for maior que o parâmetro do servidor max_allowed_packet
. Leia "Parâmetros de Sintonia do Servidor".
Para funções que operam com as posições de uma string, a primeira posição é numerada como 1.
ASCII(str)
Retorna o valor do código ASCII do caracter mais a esquerda da string
str
. Retorna0
sestr
é uma string vazia. RetornaNULL
sestr
éNULL
:mysql>
SELECT ASCII('2');
-> 50 mysql>SELECT ASCII(2);
-> 50 mysql>SELECT ASCII('dx');
-> 100Veja também a função
ORD()
.BIN(N)
Retorna um representação string do valor binário de
N
, ondeN
é um número muito grande (BIGINT
). Isto é equivalente aCONV(N,10,2)
. RetornaNULL
seN
éNULL
:mysql>
SELECT BIN(12);
-> '1100'BIT_LENGTH(str)
Retorna o tamanho da string
str
em bits:mysql>
SELECT BIT_LENGTH('text');
-> 32CHAR(N,...)
CHAR()
interpretia os argumentos como inteiros e retorna uma string com caracteres dados pelo valor do código ASCII referentes a estes inteiros. ValoresNULL
são desconsiderados:mysql>
SELECT CHAR(77,121,83,81,'76');
-> 'MySQL' mysql>SELECT CHAR(77,77.3,'77.3');
-> 'MMM'CONCAT(str1,str2,...)
Retorna a string resultante da concatenação dos argumentos. Retorna
NULL
se qualquer dos argumentos forNULL
. Pode ter mais de 2 argumentos. Um argumento numérico é convertido para sua forma string equivalente:mysql>
SELECT CONCAT('My', 'S', 'QL');
-> 'MySQL' mysql>SELECT CONCAT('My', NULL, 'QL');
-> NULL mysql>SELECT CONCAT(14.3);
-> '14.3'CONCAT_WS(separador, str1, str2,...)
CONCAT_WS()
significa CONCAT With Separator (CONCAT com separador) e é uma forma especial doCONCAT()
. O primeiro argumento é o separador para os outros argumentos. O separador é adicionado entre as strings a serem concatenadas: O separador pode ser uma string assim como os outros argumentos. Se o separador éNULL
, o resultado seráNULL
. A função irá desconsiderar qualquerNULL
depois do argumento do separador.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'Antes do MariaDB,
CONCAT_WS()
desconsiderava strings vazias assim como valoresNULL
.CONV(N,da_base,para_base)
Converte números entre diferentes bases. Retorna uma representação string do número
N
, convertido da baseda_base
para basepara_base
. RetornaNULL
se qualquer argumento éNULL
. O argumentoN
é interpretado como um inteiro, mas pode ser especificado como um inteiro ou uma string. A base mínima é2
e a máxima é36
. Separa_base
é um número negativo,N
é considerado como um número com sinal. Caso contrário,N
é tratado como um número sem sinal.CONV
funciona com precisão de 64-bit: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'ELT(N,str1,str2,str3,...)
Retorna
str1
seN
=1
,str2
seN
=2
, e assim por diante. RetornaNULL
seN
é menor que1
ou maior que o número de argumentos.ELT()
é o complemento deFIELD()
:mysql>
SELECT ELT(1, 'ej', 'Heja', 'hej', 'foo');
-> 'ej' mysql>SELECT ELT(4, 'ej', 'Heja', 'hej', 'foo');
-> 'foo'EXPORT_SET(bits,on,off,[separador,[numero_de_bits]])
Retorna uma string onde para todo bit 1 em 'bit', você obtém uma string 'on' e para cada bit 0 você obtem uma string 'off', Cada string é separada com 'separador' (padrão,',') e só 'número_de_bits' (padrão 64) de 'bits' é usado:
mysql>
SELECT EXPORT_SET(5,'S','N',',',4)
-> S,N,S,NFIELD(str,str1,str2,str3,...)
Retorna o índice de
str
na listastr1
,str2
,str3
,...
. Retorns0
sestr
não for encontrada.FIELD()
é o complemento deELT()
:mysql>
SELECT FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');
-> 2 mysql>SELECT FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');
-> 0FIND_IN_SET(str,strlista)
Retorna um valor
1
paraN
se a stringstr
está na listastrlist
contendoN
substrings. A lista de string é composta de substrings separadas pelo caracter ',
'. Se o primeiro argumento é uma string constante e o segundo é uma coluna do tipoSET
, a funçãoFIND_IN_SET()
é otimizada para usar aritmética binária! Retorna0
sestr
não está nastrlista
ou sestrlista
é uma string vazia. RetornaNULL
se os argumentos sãoNULL
. Esta função não irá funcionar adequadamente se o primeiro argumento contém uma vírgula (',
'):mysql>
SELECT FIND_IN_SET('b','a,b,c,d');
-> 2HEX(N_ou_S)
Se N_OU_S é um número, é retornado um representação string do valor hexadecimal de
N
, ondeN
é um número muito grande (BIGINT
). Isto é equivalente aCONV(N,10,16)
.Se N_OU_S é uma string, é retornado uma string hexadecimal de N_OU_S onde cada caracter de N_OU_S é convertido para 2 dígitos hexadecimais. Isto é o inverso da string
0xff
.mysql>
SELECT HEX(255);
-> 'FF' mysql>SELECT HEX('abc');
-> 616263 mysql>SELECT 0x616263;
-> 'abc'INSTR(str,substr)
Retorna a posição da primeira ocorrência da substring
substr
na stringstr
. É o mesmo que as oLOCATE()
com dois argumentos, exceto pelo fato de que os argumentos estão tracados:mysql>
SELECT INSTR('foobarbar', 'bar');
-> 4 mysql>SELECT INSTR('xbar', 'foobar');
-> 0Esta função é multi-byte. Na versão 3.23 do MariaDB esta função é caso sensitivo, enquanto na versão 4.0 ela só é caso-sensitivo se os argumentos são uma string binária.
INSERT(str,pos,tam,novastr)
Retorna a string
str
, com a a substring começando na posiçãopos
e contendotam
caracteres substituida pela stringnovastr
:mysql>
SELECT INSERT('Quadratico', 3, 4, 'Onde');
-> 'QuOndetico'Esta função é multi-byte.
LCASE(str)
,LOWER(str)
Retorna a string
str
com todos caracteres alterados para letra minúsculas de acordo com o conjunto de caracteres atual (o padrão é ISO-8859-1 Latin1):mysql>
SELECT LCASE('MYSQL');
-> 'mysql'Esta é uma função multi-byte.
LEFT(str,tam)
Retorna os
tam
caracteres mais a esquerda da stringstr
:mysql>
SELECT LEFT('foobarbar', 5);
-> 'fooba'Esta função é multi-byte.
LOAD_FILE(nome_arquivo)
Lêb o arquivo e retona o conteudo do arquivo como uma string. O arquivo beve estar no servidor, você deve especificar o caminho completo para o arquivo, e você deve ter o privilégio
FILE
. O arquivo deve ser legível para todos e ser menor que o especificado emmax_allowed_packet
.Se o arquivo não existe ou não pode ser lido devido a alguma das razões acima, a função retornará
NULL
:mysql>
UPDATE nome_tabela
SET coluna_blob=LOAD_FILE('/tmp/picture') WHERE id=1;Se você não está usando a versão 3.23 MySQL, você tem que fazer a leitura do arquivo dentro do seu aplicativo e criar uma instrução
INSERT
para atualizar o banco de dados com a informação do arquivo. Um modo de se fazer isto, se você estiver usando a biblioteca MySQL++, pode ser encontrada em http://www.mysql.com/documentation/mysql++/mysql++-examples.html.LOCATE(substr,str)
,LOCATE(substr,str,pos)
A primeira sintaxe retorna a posição da primeira ocorrência da substring
substr
na stringstr
. A segunda sintaxe retorna a posição da primeira ocorrência da substringsubstr
na stringstr
, iniciando na posiçãopos
. Retornam0
sesubstr
não está emstr
:mysql>
SELECT LOCATE('bar', 'foobarbar');
-> 4 mysql>SELECT LOCATE('xbar', 'foobar');
-> 0 mysql>SELECT LPAD('hi',4,'??');
-> '??hi'LTRIM(str)
Retorna a string
str
com caracteres de espaços extras iniciais removidos:mysql>
SELECT LTRIM(' barbar');
-> 'barbar'MAKE_SET(bits,str1,str2,...)
Retorna um conjunto (uma string contendo substrings separadas por '
,
') contendo as strings que tem o bit correspondente embits
definido .str1
corresponde ao bit 1,str2
ao bit 2, etc. StringsNULL
emstr1
,str2
,...
não são adicionadas ao resultado:mysql>
SELECT MAKE_SET(1,'a','b','c');
-> 'a' mysql>SELECT MAKE_SET(1 | 4,'Oi','meu','mundo');
-> 'Oi,mundo' mysql>SELECT MAKE_SET(0,'a','b','c');
-> ''OCT(N)
Retorna uma representação string do valor octal de
N
, ondeN
é um número muito grande. Isto é equivalente aCONV(N,10,8)
. RetornaNULL
seN
éNULL
:mysql>
SELECT OCT(12);
-> '14'ORD(str)
Se o caracter mais a esquerda da string
str
é um caracter multi-byte, é retornado o código para este caracter, calculado a partir dos valores do código ASCII dos seus caracteres contituintes utizando-se a seguinte fórmula:((primeiro byte do código ASCII)*256+(segundo byte do código ASCII))[*256+terceiro byte do código ASCII...]
. Se o caracter mais a esquerda não é multi-byte, é retornado o mesmo valor que a funçãoASCII()
retorna:mysql>
SELECT ORD('2');
-> 50LENGTH(str)
,OCTET_LENGTH(str)
,CHAR_LENGTH(str)
,CHARACTER_LENGTH(str)
Retorna o tamanho da string
str
:mysql>
SELECT LENGTH('text');
-> 4 mysql>SELECT OCTET_LENGTH('text');
-> 4LENGTH()
eOCTET_LENGTH()
são sinônimos e medem o tamanho da length em bytes (octets). Um caracter multi-byte conta é considerado vários bytes.CHAR_LENGTH()
eCHARACTER_LENGTH()
são sinônimos e medem o tamanho da string em caracteres. Um caracter multi-byte conta como um único caracter. Isto significa que para uma string contendo cinco caracteres de dois bytes,LENGTH()
retorna10
, enquantoCHAR_LENGTH()
retorna5
.MID(str,pos,len)
MID(str,pos,len)
é um sinônimo paraSUBSTRING(str,pos,len)
.POSITION(substr IN str)
POSITION(substr IN str)
é um sinônimo paraLOCATE(substr,str)
.QUOTE(str)
Coloca uma string entre aspas para produzir um resultado que possa ser usada em uma intrução SQL como um valor de dados com o caracter de escape correto. A string é retornada entre aspas simples e cada instâqncia de aspas simples ('
'
'), barra invertida ('\
'), ASCII NUL, e Control-Z é precedida por uma barra invertida. Se o argumento éNULL
, o valor retornado é a palavraNULL
sem aspas simples.A função
QUOTE()
foi adicionada na versão 4.0.3 do MariaDB.mysql>
SELECT QUOTE('Don't');
-> 'Don\'t!' mysql>SELECT QUOTE(NULL);
-> NULLREPEAT(str,cont)
Retorna uma string consistindo da string
str
repetidacont
vezes. Secont <= 0
, é retornado uma string vazia. É retornadoNULL
sestr
oucont
sãoNULL
:mysql>
SELECT REPEAT('MySQL', 3);
-> 'MySQLMySQLMySQL'REPLACE(str,da_str,para_str)
Retorna a string
str
com todas ocorrências da stringda_str
substituida pela stringpara_str
:mysql>
SELECT REPLACE('www.mysql.com', 'w', 'Ww');
-> 'WwWwWw.mysql.com'Esta função é multi-byte.
REVERSE(str)
Returns the string
str
with the order of the characters reversed:mysql>
SELECT REVERSE('abc');
-> 'cba'Esta função é multi-byte.
RIGHT(str,tem)
mysql>
SELECT RIGHT('foobarbar', 4);
-> 'rbar'Esta função é multi-byte.
RPAD(str,tam,strpreech)
Retorna a string
str
, preenchida a direita com a stringstrpreench
para um tamanho detam
caracteres. Sestr
é maior quetam
, o valor retornado é reduzido paratam
caracteres.mysql>
SELECT RPAD('hi',5,'?');
-> 'hi???'RTRIM(str)
Retourna a string
str
com caracteres de espaços extras finais removidos:mysql>
SELECT RTRIM('barbar ');
-> 'barbar'Esta função é multi-byte.
SOUNDEX(str)
Retorna uma string 'soundex' de
str
. Duas strings que parecidas fonéticamentea devem ter strings 'soundex' iguais. Uma string soundex padrão possui 4 caracteres, mas a funçãoSOUNDEX()
retorna uma string de tamanho arbitrário. Você posde usarSUBSTRING()
no resultado para obter uma string 'soundex' padrão. Todos os caracteres não alfanuméricos são ignorados na string dada. Todas caracteres internacionais fora da faixa A-Z são tratados como vogais:mysql>
SELECT SOUNDEX('Hello');
-> 'H400' mysql>SELECT SOUNDEX('Quadratically');
-> 'Q36324'SPACE(N)
Retorna uma string contendo
N
caracteres de espaço:mysql>
SELECT SPACE(6);
-> ' 'SUBSTRING(str,pos)
,SUBSTRING(str FROM pos)
,SUBSTRING(str,pos,tam)
,SUBSTRING(str FROM pos FOR tam)
A forma sem um argumento
tam
retorna uma substring da stringstr
iniciando na posiçãopos
. A forma com um argumentotam
retorna a substring comtam
caracteres da stringstr
, iniciando da posiçãopos
. A forma variante que utilizaFROM
é a sintaxe SQL-92:mysql>
SELECT SUBSTRING('Quadratically',5);
-> 'ratically' mysql>SELECT SUBSTRING('foobarbar' FROM 4);
-> 'barbar' mysql>SELECT SUBSTRING('Quadratically',5,6);
-> 'ratica'Esta função é multi-byte.
SUBSTRING_INDEX(str,delim,cont)
Retorna a substring da string
str
antes decont
ocorrencias do delimitadordelim
. Secont
é positivo, tudo a esquerda do delimitador final (contando a partir da esquerda) é retornado. Secont
é negativo, tudo a direita do delimitador final (contando a partir da direita) é retornado.mysql>
SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
-> 'www.mysql' mysql>SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);
-> 'mysql.com'Esta função é multi-byte.
TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)
Retorna a string
str
com todos prefixos e/ou sufixosremstr
removidos. Se nenhum dos especificadoresBOTH
,LEADING
ouTRAILING
são dados, é consideradoBOTH
. Seremstr
não é especificada, espaços são removidos: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'Esta função é multi-byte.
UCASE(str)
,UPPER(str)
Retorna a string
str
com todos caracteres alterados para letra maiúsculas de acordo com o conjunto de caracteres atual (o padrão é ISO-8859-1 Latin1):mysql>
SELECT UCASE('Hej');
-> 'HEJ'Esta é uma função multi-byte.