Funções string retornam NULL
se o tamanho
do resultado for maior que o parâmetro do servidor
max_allowed_packet
. See
Secção 5.5.2, “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
. Retorna
0
se str
é uma string
vazia. Retorna NULL
se
str
é NULL
:
mysql>SELECT ASCII('2');
-> 50 mysql>SELECT ASCII(2);
-> 50 mysql>SELECT ASCII('dx');
-> 100
Veja também a função ORD()
.
BIN(N)
Retorna um representação string do valor binário de
N
, onde N
é um
número muito grande (BIGINT
). Isto é
equivalente a CONV(N,10,2)
. Retorna
NULL
se N
é
NULL
:
mysql> SELECT BIN(12);
-> '1100'
BIT_LENGTH(str)
Retorna o tamanho da string str
em bits:
mysql> SELECT BIT_LENGTH('text');
-> 32
CHAR(N,...)
CHAR()
interpretia os argumentos como
inteiros e retorna uma string com caracteres dados pelo
valor do código ASCII referentes a estes inteiros. Valores
NULL
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 for NULL
. 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 do
CONCAT()
. 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 qualquer NULL
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 MySQL 4.1.1, CONCAT_WS()
desconsiderava strings vazias assim como valores
NULL
.
CONV(N,da_base,para_base)
Converte números entre diferentes bases. Retorna uma
representação string do número N
,
convertido da base da_base
para base
para_base
. Retorna
NULL
se qualquer argumento é
NULL
. O argumento N
é
interpretado como um inteiro, mas pode ser especificado como
um inteiro ou uma string. A base mínima é
2
e a máxima é 36
.
Se para_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
se N
=
1
, str2
se
N
= 2
, e assim por
diante. Retorna NULL
se
N
é menor que 1
ou
maior que o número de argumentos. ELT()
é o complemento de FIELD()
:
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,N
FIELD(str,str1,str2,str3,...)
Retorna o índice de str
na lista
str1
, str2
,
str3
, ...
. Retorns
0
se str
não for
encontrada. FIELD()
é o complemento de
ELT()
:
mysql>SELECT FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');
-> 2 mysql>SELECT FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');
-> 0
FIND_IN_SET(str,strlista)
Retorna um valor 1
para
N
se a string str
está na lista strlist
contendo
N
substrings. A lista de string é
composta de substrings separadas pelo caracter
‘,
’. Se o primeiro argumento
é uma string constante e o segundo é uma coluna do tipo
SET
, a função
FIND_IN_SET()
é otimizada para usar
aritmética binária! Retorna 0
se
str
não está na
strlista
ou se
strlista
é uma string vazia. Retorna
NULL
se os argumentos são
NULL
. 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');
-> 2
HEX(N_ou_S)
Se N_OU_S é um número, é retornado um representação
string do valor hexadecimal de N
, onde
N
é um número muito grande
(BIGINT
). Isto é equivalente a
CONV(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 string str
.
É o mesmo que as o LOCATE()
com dois
argumentos, exceto pelo fato de que os argumentos estão
tracados:
mysql>SELECT INSTR('foobarbar', 'bar');
-> 4 mysql>SELECT INSTR('xbar', 'foobar');
-> 0
Esta função é multi-byte. Na versão 3.23 do MySQL 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ção pos
e contendo
tam
caracteres substituida pela string
novastr
:
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 string str
:
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 em
max_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 string
str
. A segunda sintaxe retorna a
posição da primeira ocorrência da substring
substr
na string str
,
iniciando na posição pos
. Retornam
0
se substr
não está
em str
:
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 em
bits
definido . str1
corresponde ao bit 1, str2
ao bit 2, etc.
Strings NULL
em str1
,
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
, onde N
é um
número muito grande. Isto é equivalente a
CONV(N,10,8)
. Retorna
NULL
se N
é
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ção
ASCII()
retorna:
mysql> SELECT ORD('2');
-> 50
LENGTH(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');
-> 4
LENGTH()
e
OCTET_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()
e
CHARACTER_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()
retorna 10
,
enquanto CHAR_LENGTH()
retorna
5
.
MID(str,pos,len)
MID(str,pos,len)
é um sinônimo para
SUBSTRING(str,pos,len)
.
POSITION(substr IN str)
POSITION(substr IN str)
é um sinônimo
para LOCATE(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 palavra
``NULL'' sem aspas simples.
A função QUOTE()
foi adicionada na
versão 4.0.3 do MySQL.
mysql>SELECT QUOTE("Don't");
-> 'Don\'t!' mysql>SELECT QUOTE(NULL);
-> NULL
REPEAT(str,cont)
Retorna uma string consistindo da string
str
repetida cont
vezes. Se cont <= 0
, é retornado uma
string vazia. É retornado NULL
se
str
ou cont
são
NULL
:
mysql> SELECT REPEAT('MySQL', 3);
-> 'MySQLMySQLMySQL'
REPLACE(str,da_str,para_str)
Retorna a string str
com todas
ocorrências da string da_str
substituida
pela string para_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 string strpreench
para um
tamanho de tam
caracteres. Se
str
é maior que tam
,
o valor retornado é reduzido para tam
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ção SOUNDEX()
retorna uma string de tamanho arbitrário. Você posde usar
SUBSTRING()
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 string str
iniciando na
posição pos
. A forma com um argumento
tam
retorna a substring com
tam
caracteres da string
str
, iniciando da posição
pos
. A forma variante que utiliza
FROM
é 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
de cont
ocorrencias do delimitador
delim
. Se cont
é
positivo, tudo a esquerda do delimitador final (contando a
partir da esquerda) é retornado. Se cont
é 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 sufixos remstr
removidos. Se nenhum
dos especificadores BOTH
,
LEADING
ou TRAILING
são dados, é considerado BOTH
. Se
remstr
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.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.