Ir para conteúdo
Fórum Script Brasil
  • 0

funcao dentro de query


fcandrade

Pergunta

Ola pessoal, estou com o seguinte problema, tenho uma funcao q retira caracteres não numericos de um campo, gostaria de ativer essa funcao dentro de uma query.

Ex:

update table1 set campo=exccaractere(campo), isso é possivel ?

atualmente eu excuto o comando com um table, mas demora muito, a ultima vez q fiz o procedimento demorou + de 3 horas, pois o componente

table abre o arquivo por completo, mesmo usando filter fica muito lento, e fazendo atraves de query creio q ficaria muito mais rapido, se alguém tiver alguma dica ou tutorial de como fazer isso, fico agradecido

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Ola pessoal, estou com o seguinte problema, tenho uma funcao q retira caracteres não numericos de um campo, gostaria de ativer essa funcao dentro de uma query.

Ex:

update table1 set campo=exccaractere(campo), isso é possivel ?

atualmente eu excuto o comando com um table, mas demora muito, a ultima vez q fiz o procedimento demorou + de 3 horas, pois o componente

table abre o arquivo por completo, mesmo usando filter fica muito lento, e fazendo atraves de query creio q ficaria muito mais rapido, se alguém tiver alguma dica ou tutorial de como fazer isso, fico agradecido

Oi, 'fcandrade' !

Sua dúvida é de como montar uma função dentro do MySQL?

Se é isso use como base a função que postei em Busca por Fonemas (19/10/2007)

Quanto a dica ou tutorial sobre montagem de função o manual do MySQL poderá suprir as dúvidas que necessita (controles de fluxo e funções de uso do MySQL).

Havendo mais dúvidas poste novamente

Link para o comentário
Compartilhar em outros sites

  • 0

vamos ver se eu consigo ser mais detalhado

tenho 1 table com o seguinte campo cnpj_cpf varchar(14) , tenho que atualizar periodicamente esse campo pois as vezes ele contem caracteres não numericos ( 392.694.654-99 ou 392694.87999 -> esses numeros são apenas exemplos) o que eu faco é retirar os caracteres ( . - / e espacoes em branco ) com uma funcao q criei onde leio o campo e armazeno os dados numericos em uma variavel e depois gravo o campo novamente com essa variavel.

O que eu gostaria de fazer é retirar todos os campos não numericos do campo da tabela, isso é possivel atraves de uma instrucao sql ? Como fazer ?

Link para o comentário
Compartilhar em outros sites

  • 0
vamos ver se eu consigo ser mais detalhado

tenho 1 table com o seguinte campo cnpj_cpf varchar(14) , tenho que atualizar periodicamente esse campo pois as vezes ele contem caracteres não numericos ( 392.694.654-99 ou 392694.87999 -> esses numeros são apenas exemplos) o que eu faco é retirar os caracteres ( . - / e espacoes em branco ) com uma funcao q criei onde leio o campo e armazeno os dados numericos em uma variavel e depois gravo o campo novamente com essa variavel.

O que eu gostaria de fazer é retirar todos os campos não numericos do campo da tabela, isso é possivel atraves de uma instrucao sql ? Como fazer ?

Oi, 'fcandrade' !

Fiz esta função agora e não tenho como testá-la, mas creio estar correta.

Ela var varrer uma cadeia de caracteres qualquer até o limite de 30 posições, gravando em uma variável somente os caracteres numéricos. No final ela retornará a cadeia de caracteres limpa.

Vai ficar gravada em seu banco de dados e pode ser usada com qualquer instrução SQL, tal como exemplificado abaixo, após a descrição da função.

Se houver dúvida ou erro na função, por favor, reporte para que possamos corrigí-la.

DELIMITER $$;

DROP FUNCTION IF EXISTS MEUBANCO.LimpaNum$$

CREATE DEFINER=root@localhost FUNCION LimpaNum(velho char(30))
RETURNS char(30) CHARSET latin1
BEGIN
   declare x int default 1;
   declare novo char(30) default '';
   declare aux  char(1);
   while x <= 30 do
      set aux = substring(velho, x, 1);
      if aux >= '0' and aux <= '9' then
         set novo = concat(novo, aux);
      end if;
      set x = x + 1;
   end while;
   return novo;
END$$

DELIMITER;$$
UPDATE TABELA
SET CAMPO = LimpaNum(CAMPO);

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...