Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mineirodan

Separar valor do campo Mysql por espaços, salvar em outra tabela.

Recommended Posts

Bom dia,

 

Tenho um tabela telefone, essa tabela possui o campo dígitos.

Esse campo possui valores dessa forma 5536633696 2525 2525, ou assim 5555 25252566.

por este motivo preciso pegar este valores separadamente, a cada espaço pega o valor e guarda em outra tabela.

 

assim

 

INSERT INTO TABELA digitos2 (dig1, dig2, dig3 ) select campo 5536633696 2525 2525 pega valor 5536633696 (espaço), pega valor 2525(espaço), pega valor 2525 FROM TABELA DIGITO.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Mineirodan, boa tarde.

 

Veja se isso ajuda:

select trim(substring_index(substring_index('5536633696 2525 2525', ' ' ,1),' ',-1))
,trim(substring_index(substring_index('5536633696 2525 2525', ' ' ,2),' ',-1))
,trim(substring_index(substring_index('5536633696 2525 2525', ' ' ,2),' ',-1))

_ _

Fabiano Abreu

Papo SQL - De tudo um pouco sobre SQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Fabiano,

 

Primeiramente obrigado, no meu caso eu gostaria de pegar o campo, e não o valor mais ou menos como o código abaixo,

select trim(substring_index(substring_index('digits', ' ' ,1),' ',-1)),
,trim(substring_index(substring_index('digits', ' ' ,2),' ',-1))
,trim(substring_index(substring_index('digits', ' ' ,2),' ',-1))

 

o campo digits possui valores que por hora estão assim 5536633696 2525 2525, como se estivessem divididos em três pelos espaços, algumas momentos como se estivessem divididos em dois pelos espaços assim 5536633696 2525 e em alguns momentos apenas um assim 5536633696.

 

 

 

Olá Mineirodan, boa tarde.

 

Veja se isso ajuda:

select trim(substring_index(substring_index('5536633696 2525 2525', ' ' ,1),' ',-1))
,trim(substring_index(substring_index('5536633696 2525 2525', ' ' ,2),' ',-1))
,trim(substring_index(substring_index('5536633696 2525 2525', ' ' ,2),' ',-1))

_ _

Fabiano Abreu

Papo SQL - De tudo um pouco sobre SQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mineirodan, no caso onde o valor existente for só 5536633696 os campos dig2 e dig3 teriam que ficar nulos?

 

Pergunto pois, no exemplo que te passei, se não houver valor na posição 2 ou 3, ele pega a posição 1, isto que é o problema?

 

_ _

Fabiano Abreu

Papo SQL - De tudo um pouco sobre SQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mineirodan, no caso onde o valor existente for só 5536633696 os campos dig2 e dig3 teriam que ficar nulos?

 

Pergunto pois, no exemplo que te passei, se não houver valor na posição 2 ou 3, ele pega a posição 1, isto que é o problema?

 

_ _

Fabiano Abreu

Papo SQL - De tudo um pouco sobre SQL

 

Sim Fabiano,

 

O primeiro campo nunca será nullo, mas os os valores que deveram ir para ir pra dig2 e dig3 ficaram nullos cas não tenha valores..

Em alguns momentos o dig2 e dig3 serão nullos e em outros apenas o dig3.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o seguinte então, exporte os dados,preferencialmente em formato csv, depois importe-os para uma nova tabela, neste momento, dividindo os campos, depois, é só inserir na sua tabela "final".

 

Espero ter ajudado, abraços.

 

_ _

Fabiano Abreu

Papo SQL - De tudo um pouco sobre SQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o seguinte então, exporte os dados,preferencialmente em formato csv, depois importe-os para uma nova tabela, neste momento, dividindo os campos, depois, é só inserir na sua tabela "final".

 

Espero ter ajudado, abraços.

 

_ _

Fabiano Abreu

Papo SQL - De tudo um pouco sobre SQL

 

Entendo,

 

Mas preciso ter isso no script,,

 

Não existe uma maneira de fazer com que os campo dig2 e dig3 fiquem nullos se os valores correpondentes na tabela forem nulos veja isto.

 

TABELA 1 TABELA 2

digits DIG1 DIG2 DIG3

8087 986603756 8087 986603756

1123229480 8000 6000 1123229480 8000 6000

8087 986603756 8087 986603756

1123229480 8000 6000 1123229480 8000 6000

8087 986603756 8087 986603756

8087 31598049 8087 31598049

8087 86603756 8087 86603756

8087 31598049 8087 31598049

2131598049 8087 2131598049 8087

8086 31531330 8086 31531330

8086 8086

2131574742 8087 2131574742 8087

8086 31531330 8086 31531330

21991633267 8087 21991633267 8087

8169 8169

8075 8075

1123229480 8000 6000 1123229480 8000 6000

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde a todos e brigado pela ajuda, estou passando por aqui para colocar a solução, depois de muito muito pesquisar eis que, para separar um campo tendo o espaço como parâmetros.

 

Imagine duas tabelas "tabela1" e "tabela2".

"tabela1" "tabela2".

campo1 campo1 campo2 campo3

 

O que eu gostaria e dividir o campo1 da tabela1 em 3 e inserir na "tabela2 nos "campo1 campo2 campo3. O problema é que alguns momentos os campos serão nulos segue abaixo como resolvi.

 

 <?php
           include_once ("conexao.php");
      $sql = mysql_query ("INSERT INTO tabela2(campo1, campo2, campo3)        
SELECT  
SUBSTRING_INDEX(campo1,' ',1),
case 
when LENGTH(trim(campo1)) - LENGTH(SUBSTRING_INDEX(trim(campo1), ' ', '1')) = 0 then null
else  SUBSTRING_INDEX(SUBSTRING_INDEX(trim(campo1),' ',2),' ',-1) 
END,
case 
when LENGTH(trim(campo1)) - LENGTH(SUBSTRING_INDEX(trim(campo1), ' ', '2')) = 0 then null
else SUBSTRING_INDEX(trim(campo1),' ',-1)
END
 FROM tabela1")or die(mysql_error());


               if (!$sql) {
                      echo "Ocorreu um erro ao inserir o contato.<br />";
                      echo "<a href ='main.php'> Voltar </a> <br />";
                  } else {


                      echo "Cadastro Efetuado com sucesso!<br />";
                      echo "<a href ='main.php'> Voltar </a> <br />";
                  }
        
        ?>
     

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Mineirodan.

 

Utilizei sua solução em minha aplicação com sucesso!

 

Estou tentando implementar um forma de deletar o registro na tabela de origem ao copiar para tabela destino:

 

TABELA 1 TABELA 2

digits DIG1 DIG2 DIG3

8087 986603756

TABELA 1 TABELA 2

digits DIG1 DIG2 DIG3

8087 986603756

Você ou alguém do forum indica uma solução?

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.