1
resposta

Formatação e inclusão dados

Tem algum vídeo que possa me ajudar com a questão abaixo?

Tem um terminada tabela que tem o telefone de vários usuários, onde nem todos estão com o numerador 9 após o DDD.

Ex: 55319854444196

Preciso de uma função que conte a quantidade de números, e nos caso que tenha 13 inclua o numero 9 após a sequencia de 4 dígitos da esquerda para direta.

Para os casos que tenha já o 13 dígitos não fazer nd

1 resposta

Olá, Diego, tudo bem?

Uma forma de obter esse resultado é utilizando as funções LEN e STUFF, como mostro abaixo:

SELECT *
FROM CLIENTES 
WHERE LEN(telefone) = 12;

print da tela principal do SSMS, onde o comando com  LEN foi executado, e apenas os registros que tem 12 caracteres foram restornados

A função LEN é utilizada para retornar o comprimento de uma string, neste caso, só serão retornados os registros onde no campo telefone a quantidade de caracteres seja igual a 12:

SELECT STUFF(telefone, 5, 0, '9') as Novo_Numero
  FROM CLIENTES 
  WHERE LEN(telefone) = 12;

Print da tela do ssms, onde o comando com STUFF e LEN foi executado, e apenas os registros que tem 12 caracteres foram restornados, e na possição 5 o caractere  9 foi adicionado

A função STUFF é utilizada para inserir uma string dentro de outra string, a partir de uma posição especificada.

Associada a função LEN, a função STUFF vai inserir o caractere 9, na posição 5, para o campo telefone onde a quantidade de caracteres armazenados seja igual a 12.

Para atualizar o campo telefone definitivamente, você pode utilizar o comando UPDATE:

UPDATE clientes SET telefone =  STUFF(telefone, 5, 0, '9')
  WHERE LEN(telefone) = 12;

A título de curiosidade, caso queira ver um pouco mais a respeito da função STUFF, e da função LEN, indico a leitura da documentação do SQL Server.

Espero ter ajudado e bons estudos!