

Tenho visto muita gente lendo os dados do MySQL, criando uma matriz (array) ou tupla (recordset) dentro da linguagem de programação, para só então, utilizar-se das funções para tratamento de caracteres disponíveis nesta linguagem. Quem tiver usando C puro, tá morto né.
Pois bem, vamos rever algumas funções de caracteres implementadas dentro do MySQL que podem ser uma mão-na-roda para todo desenvolvedor, muitas delas, indisponíveis em algumas linguagens:
CHAR: Retorna um caracter contido dentro da tabela ASCII, conforme valor informado. Para quem não conhece, existe uma tabela numerada de 1 a 255, uma matriz, que determina todos os caracteres válidos. Por exemplo A = 65, B = 66, e assim por diante.
mysql> SELECT CHAR(65);
A
mysql> SELECT CHAR(65,76,69,88);
ALEX
CHAR_LENGTH: Retorna a quantidade de caracteres de uma string.
mysql> SELECT CHAR_LENGTH(‘Melissa’);
7
CONCAT: Concatena várias sequências de caracteres (strings), numa só:
mysql> SET @nome_do_usuario = ‘Vinicius’;
mysql> SELECT CONCAT(‘Bom Dia ‘, @nome_do_usuario, ‘, ‘, ‘como você vai?’);
Bom Dia Vinicius, como você vai?
CONCAT_WS: Semelhante à CONCAT, contudo, a primeira sequência de caracteres é permeada, repetida, dentre as demais strings.
mysql> SELECT CONCAT_WS(‘/’, ’31’, ’12’, ‘2012’);
31/12/2012
mysql> SELECT CONCAT_WS(‘-‘,’cod’,’prod’,’001′);
cod-prod-001
INSTR: Busca a ocorrência de uma substring dentro de uma string. Retorna zero se não encontrou nada, e, a posição inicial (dentro da string) caso encontre uma equivalência.
mysql> SELECT INSTR(‘Impressora HP Deskjet D1560’, ‘D1561’);
0
mysql> SELECT INSTR(‘Impressora HP Deskjet D1560’, ‘D1560’);
23
LCASE ou LOWER: Transforma uma todos os caracteres maiúsculos em minúsculos.
mysql> SELECT LCASE(‘LIMÃO’);
limão
mysql> SELECT LOWER(‘MORANGO’);
morango
mysql> SELECT LCASE(‘TIMÃO’);
timinho <- aqui fica demonstrada toda a inteligência artificial do MySQL, desculpem-me, não consegui resistir! Desculpa Théo!!
LEFT: retorna N caracteres à esquerda.
mysql> SELECT LEFT(‘Piracicaba’, 4);
Pira
LENGTH: Oops. Agora vai ficar sinistro. LENGTH retorna a quantidade de bytes de uma sequência de caracteres. Impossível não comparar com CHAR_LENGTH que retorna a quantidade de caracteres. Então temos: LENGTH: retorna quantidade de bytes de uma string, e, CHAR_LENGTH sempre a quantidade de caracteres. Isto é um problema? Sim, dependendo da CHARACTER SET em uso (LATIN1, UTF8, etc) um caracteres pode ter um custo de 1 ou mais bytes. Vamos tornar esta explicação mais interessante.
LATIN1: Usando-se esta CHARSET (só para os íntimos) a letra “ã” (a com til) custa exatamente 1 byte. Já em UTF-8, esta mesma letra custa 2 bytes.
Tomemos minha querida São Paulo como exemplo. São Paulo tem 9 caracteres, incluso o espaço. No entanto, ela tem um custo de 9 bytes em Latin1, e, 10 bytes em UTF-8. Para provar isso teremos que lançar mão da função CONVERT que irá garantir, forçar, o uso de uma CHARSET.

mysql> SELECT CHAR_LENGTH(CONVERT(‘São Paulo’ USING UTF8));
9
mysql> SELECT CHAR_LENGTH(CONVERT(‘São Paulo’ USING LATIN1));
9
CONVERT(‘STRING’ USING <CHARSET>), basicamente, este é o uso da função CONVERT que escreverei um POST dedicado à CHARSET e CONVERT. “O proféssor (com é) tá ficando véio’. Falando de LENGTH deu exemplo de CHAR_LENGTH. Não, pequeno gafanhoto, o intuito aqui é demonstrar que CHAR_LENGTH retorna a quantidade de caracteres, independente, da CHARSET em uso.
Agora sim, vamos ao LENGTH:
mysql>
SELECT LENGTH(CONVERT(‘São Paulo’ USING LATIN1));
9
mysql> SELECT LENGTH(CONVERT(‘São Paulo’ USING UTF8));
10
LPAD/RPAD: Preenche com caracteres à esquerda (LPAD) ou à direita (RPAD) até o tamanho limite estabelecido:
mysql> SELECT LPAD(‘500′,6,’0’);
000500
Onde ‘500’ é a string, 6 é o tamanho limite de caracteres, e ‘0’ o caractere que deve ser utilizado para preenchimento.
mysql> SELECT RPAD(‘ALE’,9,’?’);
ALE??????
LTRIM/TRIM/RTRIM: Removedor de espaços. (L) à esquerda, (R) à direita, enquanto TRIM remove todos os espaços à esquerda e à direita, porém, jamais espaços entre caracteres.
mysql> SELECT LTRIM(‘ Rio de Janeiro’);
Rio de Janeiro
mysql> SELECT RTRIM(‘Rio de Janeiro ‘);
Rio de Janeiro
mysql> SELECT CONCAT(‘[‘, TRIM(‘ Rio de Janeiro ‘), ‘]’);
[Rio de Janeiro]
MID/SUBSTRING/SUBSTR: Permite extrair trechos de uma sequência de caracteres.
mysql> SELECT MID(‘Rio de Janeiro’, 5, 2);
de
Onde ‘Rio de Janeiro’ é a string, 5 é a primeira posição dentro da string (iniciando a partir de 1), e, 2 posições (caracteres) devem ser extraídos.
mysql> SELECT SUBSTRING(‘MySQL é o melhor banco de dados’, 11, 6);
melhor
REPEAT: Simplesmente, repete N vezes um determinado caracter, ou sequência de caracteres:
SELECT REPEAT(‘*’, 10);
**********
SELECT REPEAT(‘Sim ‘, 3);
Sim Sim Sim
REPLACE: Troca um caractere ou sequência dentro de uma string.
mysql> SELECT REPLACE(‘www.mysql.com’, ‘.com’, ‘.com.br’);
www.mysql.com.br
Onde ‘www.mysql.com’ é a string a ser modificada, ‘.com’ o que dever ser procurado e substituído por ‘.com.br’.
RIGHT: Retorna os N caracteres mais à direta de uma string.
mysql> SELECT RIGHT(‘ALEXANDRE’,5);
ANDRE
UCASE/UPPER: Transforma minúsculas em maiúsculas.
mysql> SELECT UCASE(‘melissa’);
MELISSA
mysql> SELECT UPPER(‘théo’);
THÉO
mysql> SELECT UCASE(‘corinthians’);
SÃO PAULO FUTEBOL CLUBE
REVERSE: Reverte, inverte uma string.
mysql> SELECT REVERSE(‘1234’);
4321
Pessoal, basicamente, aqui estão listadas 90% das funções de manipulação de strings do MySQL. Obviamente, todas elas podem ser encapsuladas umas dentro das outras, sem qualquer distinção. Funções de manipulação de strings são especialmente úteis dentro de comandos SQL do tipo DML, tais como: INSERT, UPDATE, DELETE, REPLACE e sobretudo nos SELECT’s. Todas estas funções podem ser utilizadas na criação de programas embarcados no MySQL, conhecidos como PROCS ou STORED ROUTINES, tais como: eventos (events), funções (functions), rotinas (procedures) e gatilhos (triggers).
Visite nosso Blog
Saiba mais sobre bancos de dados
Aprenda sobre monitoramento com ferramentas avançadas

Tem dúvidas sobre nossos serviços? Acesse nosso FAQ
Quer ver como ajudamos outras empresas? Confira o que nossos clientes dizem nesses depoimentos!
Conheça a História da HTI Tecnologia