quinta-feira, março 05, 2015

Instrução SQL para incluir o nono digito de celular em banco de dados

Desenvolvi uma instrução SQL para acrescentar o nono digito no telefone celular num banco de dados. O exemplo é para um número antigo de celular com 10 dígitos onde os dois primeiros dígitos identifica o DDD e os oito dígitos restantes identifica o número do celular/telefone.

Ex.: 1199999999 = (11) 9999-9999 passará a ficar assim: 11999999999 = (11) 99999-9999

Desenvolvi a instrução para o MySQL, mas nada impede de seguir o algorítimo para ajustar ao seu banco de dados ou a quantidade de números de telefone com mais dígitos como por exemplo se tem o zero no DDD (01199999999)

Veja um SELECT de como foi feito para pegar cada parte do número e como ficará o resultado:
SELECT 
telefone AS ORIGINAL
LENGTH(telefone) AS TAMANHO,
SUBSTRING(telefone, 1, 2) AS DDD,
SUBSTRING(telefone, 3, 10) AS TELEFONE,
SUBSTRING(telefone, 3, 1) AS TIPO,
CONCAT(SUBSTRING(telefone, 1, 2),'9',SUBSTRING(telefone, 3, 10)) AS RESULTADO
FROM tabela 
WHERE telefone IS NOT NULL 
AND SUBSTRING(telefone, 3, 1) IN (9,8,7,6) #TIPO DE TELEFONE: 12345 = FIXO; 6789 = CELULAR
AND SUBSTRING(telefone, 1, 2) IN (11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 24, 27, 28, 91, 92, 93, 94, 95, 96, 97, 98, 99) # LISTA DE DDD PARA ACRESCENTAR O 9
AND LENGTH(telefone) = 10 #TAMANHO ANTIGO COM 10 DÍGITOS
ORDER BY telefone;


Agora o UPDATE em ação:
UPDATE tabela SET 
telefone = CONCAT(SUBSTRING(telefone, 1, 2),'9',SUBSTRING(telefone, 3, 10)) # ATRIBUI O NOVO RESULTADO
WHERE telefone IS NOT NULL 
AND SUBSTRING(telefone, 3, 1) IN (9,8,7,6) #TIPO DE TELEFONE: 12345 = FIXO; 6789 = CELULAR
AND SUBSTRING(telefone, 1, 2) IN (11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 24, 27, 28, 91, 92, 93, 94, 95, 96, 97, 98, 99) # LISTA DE DDD PARA ACRESCENTAR O 9
AND LENGTH(telefone) = 10 #TAMANHO ANTIGO COM 10 DÍGITOS
;