Otimizando PHP/MySQL: Concatenando Partes de um Registro e Criando Novas Informações

Nosso maior público, no desenvolvimento de sistemas personalizados, são empresas com foco em eventos e congressos, dia desses um dos nossos clientes precisou de uma solução imediata com um evento feito sem o nosso sistema. A massa de registros dos inscritos para o evento veio sem um campo, muito comum para esse tipo de segmento, que é o “nome para crachá”, onde se espera que o participante coloque como quer ser identificado, e limita-se o número de caracteres para não extrapolar o tamanho da etiqueta que se utiliza na credencial.

A massa era grande, aproximadamente 1200 participantes e estava alocado em servidor alheio, não poderíamos fazer nenhuma modificação na base do evento, formação de conteúdo em novo campo, etc. Então utilizamos uma combinação de funções para solucionar o problema, partimos da proposta que os participantes não escolheriam seus nomes para a credencial e sim que essa identificação seria formada pelo primeiro nome e o último sobrenome. Veja como ficou:

SELECT
  Upper(concat(SUBSTRING_INDEX(`cadastrogeral`.`nome`,’ ‘,1),’ ‘,SUBSTRING_INDEX(`cadastrogeral`.`nome`,’ ‘,-1)))  AS `cracha`
FROM
 `cadastrogeral`

No exemplo acima se temos no campo “nome” o conteúdo: “José Pedro dos Santos” teremos como “crachá” o retorno “JOSÉ SANTOS”.

Considerações:

  • Upper: deixa todas as palavras que retornaram a seleção com a letra maíuscula.
  • SUBSTRING_INDEX(campo,caracter diferencial,índice), no primeiro caso do exemplo acima pegamos o grupo de caracteres até o primeiro espaço em branco, partindo do começo do registro. Já na segunda parte fazemos a mesma puxada só que o índice “-1” faz a busca começar do final do registro.
  • AS cria um alias para tratarmos na puxada já nas linhas de código.
  • Sei que poderíamos fazer esse processo via PHP, mas temos que concordar que dessa forma economizamos linhas e processo de programação e processamento e já que vamos ter que fazer uma consulta ao banco de dados que ela já venha pronta.
  • Esses processos não mudam muito o tempo da puxada, ainda mais se você pensar que o processo era individual, ou seja, na hora do credenciamento, portando a pesquisa era limitada por um WHERE, era específica, retornarva um só registro e fazia o processo de concatenção com as partes do nome.

Um abraço e até a próxima

Compatilhe esse artigo!

Leave a Reply

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.