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
;