Ir ao conteúdo
  • Cadastre-se

Selecionar trecho entre determinados caracters


Posts recomendados

É 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?

Link para o comentário
Compartilhar em outros sites

  • Moderador

@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:

 

 

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@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.

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@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.

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois...

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
Link para o comentário
Compartilhar em outros sites

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...