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

Digito 9 no começo dos telefones


marloncos

Pergunta

Pessoal,

Preciso muito da ajuda dos experts em DB e sei que não há lugar melhor que esse forum!!!

Seguinte, tenho em um banco de dados uma tabela com numeros de telefone mais ou menos assim:

col1|col2|col3

6244|1141192100|145

5212|1184592810|340

5692|1192345814|311

7924|1368274623|390

Mas com essa nova portaria da ANATEL do nono dígito nos telefones de SP, preciso incluí-lo nos telefones, mas preciso de uma forma mais automatizada de fazer isso (atualmente estou inserindo esse numero 9 na mão e são mais de 100kk números).

Gostaria de um select que colocasse esse número nove nos números e se possível já fizesse o insert dessas informações, ficando assim:

col1|col2|col3

8724|1141192100|145

4246|11984592810|340

0912|11992345814|311

6928|1368274623|390

A primeira coluna é a chave primária da tabela, então poderia inserir um número qualquer à partir de 696001432 e sei que a cláusula where deve ser assim "where col2 like '11%' and col3 like '3%' mas não sei fazer o select colocando o número 9 e o insert.

Vlw pessoal!!!

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde Marloncos,

Ficamos felizes pelos elogios ao Forum!! :)

Fazer a mão é suicídio!!!! rs...

Segue um exemplo de como você poderá fazer as alterações. Não há a necessidade de insert, apenas update. Fiz um exemplo para entender como poderá implementar. Ai você adapta as regras de acordo com a sua necessidade. Vi q o número 9 também tem q entrar no começo dos números de celulares. Fiz este filtro também. Se não entender, posta ai...

-- criar temporária
CREATE TABLE #Tabela (Col1 VARCHAR(15),Col2 VARCHAR(15), Col3 VARCHAR(15))

-- inserir os dados
insert into #Tabela values('6244','1141192100','145')
insert into #Tabela values('5212','1184592810','340')
insert into #Tabela values('5692','1192345814','311')
insert into #Tabela values('7924','1368274623','390')

-- verificar
SELECT * FROM #Tabela

-- select de como vai ficar
SELECT case WHEN 
left(col2,2)=11 and substring(col2,3,1) IN (8,9) 
THEN substring(col2, 1, 2) + '9' + substring(col2, 3, 12) ELSE col2 end Telefone FROM #Tabela

-- alterar os dados
UPDATE #Tabela SET col2=(substring(col2, 1, 2) + '9' + substring(col2, 3, 12)) 
WHERE left(col2,2)=11 and substring(col2,3,1) IN (8,9)

-- verificar
SELECT * FROM #Tabela

Link para o comentário
Compartilhar em outros sites

  • 0

Boa tarde Fulvio, não é minha necessidade, mas por aprendizado resolvi "ler" os comandos passados por você e até o SELECT case eu entendi +/-, me confundi um pouco com o lance das "substrings"...

Mas eu não entendi o funcionamento do UPDATE que você deu...

Rola uma explanação? *rs*

Vlws

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia Vitor,

Ok, vamos lá:

O comando substring retorna as posições que deseja em uma sequência de caracteres:

SELECT SUBSTRING('ABCDEF', 1, 2)

SELECT SUBSTRING('ABCDEF', 3, 1)
O primeiro parâmetro do comando é a string, o segundo é a posição que deseja começar, a terceira é a quantidade de casas que deseja retornar. O comando left é bem parecido com o de cima, mas não precisa identificar onde começar, pois sempre irá começar da esquerda. Da mesma forma do comando right, que começará a ler os caracteres da direita. então vamos aos comandos:
case WHEN left(col2,2)=11 and substring(col2,3,1) IN (8,9)
THEN substring(col2, 1, 2) + '9' + substring(col2, 3, 12) ELSE col2

--> Caso os 2 primeiros números da esquerda seja igual a 11 e o terceiro número começe com 8 ou 9 (pra identificar que é celular. Fixo não precisa), concatenar: os dois primeiros números da esquerda + 9 + o resto dos números.

Esta é a explicação. Após rodar o select e identificar que os dados estão ok, fazer o UPDATE.

O update seguirá a mesma estrutura. Quando executar, o sql irá alterar todas as linhas, acrescentando o 9 para todos os números que estejam contemplados nestas clausulas. Por isso que falei que não haveria a necessidade de insert.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

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