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. Retorna0sestré uma string vazia. RetornaNULLsestré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). RetornaNULLseNéNULL:mysql>
SELECT BIN(12);-> '1100'BIT_LENGTH(str)Retorna o tamanho da string
strem 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. ValoresNULLsã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
NULLse 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 qualquerNULLdepois 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_basepara basepara_base. RetornaNULLse qualquer argumento éNULL. O argumentoNé interpretado como um inteiro, mas pode ser especificado como um inteiro ou uma string. A base mínima é2e 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.CONVfunciona 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
str1seN=1,str2seN=2, e assim por diante. RetornaNULLseNé menor que1ou 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
strna listastr1,str2,str3,.... Retorns0sestrnã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
1paraNse a stringstrestá na listastrlistcontendoNsubstrings. 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! Retorna0sestrnão está nastrlistaou sestrlistaé uma string vazia. RetornaNULLse 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
substrna 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çãopose contendotamcaracteres substituida pela stringnovastr:mysql>
SELECT INSERT('Quadratico', 3, 4, 'Onde');-> 'QuOndetico'Esta função é multi-byte.
LCASE(str),LOWER(str)Retorna a string
strcom 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
tamcaracteres 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_tabelaSET 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
INSERTpara 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
substrna stringstr. A segunda sintaxe retorna a posição da primeira ocorrência da substringsubstrna stringstr, iniciando na posiçãopos. Retornam0sesubstrnã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
strcom 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 embitsdefinido .str1corresponde ao bit 1,str2ao bit 2, etc. StringsNULLemstr1,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). RetornaNULLseNé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
strrepetidacontvezes. Secont <= 0, é retornado uma string vazia. É retornadoNULLsestroucontsãoNULL:mysql>
SELECT REPEAT('MySQL', 3);-> 'MySQLMySQLMySQL'REPLACE(str,da_str,para_str)Retorna a string
strcom todas ocorrências da stringda_strsubstituida pela stringpara_str:mysql>
SELECT REPLACE('www.mysql.com', 'w', 'Ww');-> 'WwWwWw.mysql.com'Esta função é multi-byte.
REVERSE(str)Returns the string
strwith 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 stringstrpreenchpara um tamanho detamcaracteres. Sestré maior quetam, o valor retornado é reduzido paratamcaracteres.mysql>
SELECT RPAD('hi',5,'?');-> 'hi???'RTRIM(str)Retourna a string
strcom 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
Ncaracteres 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
tamretorna uma substring da stringstriniciando na posiçãopos. A forma com um argumentotamretorna a substring comtamcaracteres 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
strantes decontocorrencias 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
strcom todos prefixos e/ou sufixosremstrremovidos. Se nenhum dos especificadoresBOTH,LEADINGouTRAILINGsão dados, é consideradoBOTH. Seremstrnã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
strcom 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.