Ir ao conteúdo

Posts recomendados

Postado

É possível fazer um script que que pegue os caracteres entre  determinado caracteres, por exemplo, na minha tabela eu tenho um campo que registra quem cadastrou a informação e o horário, acontece que a informação apresenta dessa maneira:

Cadatrado por: <Nome do Usuario>*<Data>*<Hora>

Tem alguma forma de pegar apenas a informação do <Nome do Usuario>, tentei usar CHARINDEX, mas o código ficou pesado na hora de processar os dados, teria uma maneira de fazer isso com melhora de performance?

  • Moderador
Postado

@akilles0 Não, creio que nem exista algo que converta no mysql ou em algum banco de dados.

 

O que podes fazer é o seguinte:

 

Crie uma tabela nova, com os devidos campos por exemplo  ID(int auto increment primary key), nome(Varchar) e datahora(datetime).

 

Depois, use o seu código com o CHARINDEX para pegar o nome  a data e a hora.

Com o retorno dessa consulta,  use um INSERT INTO com esses dados na tabela nova!

 

Para ser mais fácil, use php e crie um código que puxe os dados e insira na nova tabela.

Depois de ter populado a nova tabela, você pode dar um DROP na antiga. :thumbsup:

 

 

 

Postado

@dif Na verdade não posso criar um nova tabela, isso é uma tabela do sistema aqui da empresa, e fizeram essa "*agada", precisaria fazer um Select mesmo pra resolver a questão para um relatório.

  • Moderador
Postado

@akilles0 Então não há o que fazer para melhorar o desempenho da consulta.

Acho que deves falar com algum superior ou chefe e diga para ele que o banco de dados deve ser corrigido. 

Sinceramente quem fez isso no banco de dados, é um anti-profissional.  Parece que foi modelado por uma criança de 10 anos.

 

o que torna pesado, é ter que separar os dados por substring toda vez, se tiver muitos dados, o desempenho vai pro limbo.

 

Postado

@dif É tão grave assim o que ele fez? É que toda tabela do banco de dados tem esse campo porque aparece na tela do Sistema, usamos como log, por isso que acho que ele juntou, criou uma trigger que monta essa informação no campo.

  • Moderador
Postado

@akilles0 Sim é grave porque afeta e fere as normas formais do banco de dados.

Não se pode ter em um mesmo campo várias informações que podem usar um campo separado.

Por estar razões, a consulta fica ruim, desempenho ruim, suscetível a duplicações e erros.

 

Por isso o melhor seria normalizar o banco do jeito que eu te disse.

  • 4 semanas depois...
Postado

Boa noite pessoal, tudo bem? Como o Dif disse, que bela m3rd@! Mas que se pode fazer, passei por uma parecida algum tempo atras quando peguei um banco de dados em access que o pai da criança tinha feito uma consulta em uma tabela simples, com poucos campos, e poucos registros, uns 200 mil talvez, ele tinha feito uma rotina que varria registro a registro para localizar poucas linhas, coisa que um select simples e um índice na tabela fizeram uma consulta que durava quase 4 minutos rodar em 1 segundo e meio (sendo bem condescendente), mas para o seu caso akiles solução tem, não é complexa, mas trabalhosa, existem algumas funções que você pode usar tipo a Substring(), Instr() que servem para retirar pedaços de cadeias de caracteres, localizar ocorrências e assim por diante, vou postar o link do MySQL, mas acho que deve haver correspondentes para todas as famílias de bancos de dados, o melhor é estudar e suar a camiseta.

 

http://dev.mysql.com/doc/refman/5.7/en/string-functions.html

 

 

  • Curtir 1
Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!