Inserir caracteres em CPF (SQL)

05/09/2019

0

SQL

Boa noite pessoal,

Sou novo aqui e n ão sei se já houve a discussão sobre esse assunto aqui.

Estou com um banco (SQL) com vários cpfs cadastrados e todos eles estão sem ponto e traço, mas eu preciso que estejam com ponto e traço.
Atualmente estão assim: 12345678901 e eu preciso que fique 123.456.789-01

Já tentei algumas coisas que vi na internet, mas nada ajudou muito, até porque a maioria das vezes vi pessoas querendo remover esses caracteres.

Como eu conseguiria fazer isso?
Vinicius

Vinicius

Responder

Post mais votado

06/09/2019

algo assim:
SELECT
	LEFT(CampoCPF,3)+'.'+SUBSTRING(CampoCPF,4,3)+'.'+SUBSTRING(CampoCPF,7,3)+'-'+SUBSTRING(CampoCPF,10,2) CPF,
	*
FROM
	Tabela
WHERE
	CampoCPF > ''

Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

06/09/2019

Jair N.

Bem SQL qual o banco MSSQLServer? Faça uma função de retorno tanto para CPF como CGC e faça a chamada Exemplo

SELECT dbo.fnc_str_check_cnp_fj(2, tab.campo_cpf) AS cpf_formatado FROM tabela tab;

-- ===============================================================================
-- SQLSERVER : Calculo do CNP-FJ (Física/Jurídica) CPF OU CGC
-- ===============================================================================
--DROP FUNCTION dbo.fnc_str_check_cnp_fj;
CREATE FUNCTION dbo.fnc_str_check_cnp_fj(@intTipo INTEGER, @numCNP_FJ VARCHAR(20))
RETURNS VARCHAR(25) AS
BEGIN
DECLARE
@vchRetorno VARCHAR(25) = 'F|I|Incorreto'
, @txtNumero VARCHAR(20) = ''
, @i INTEGER = 0
, @intNumDig_1 INTEGER
, @intNumDig_2 INTEGER
, @intCalDig_1 INTEGER
, @intCalDig_2 INTEGER;

-- Limpando a informação...
WHILE (CAST(LEN(@numCNP_FJ) AS INTEGER) +1 > @i)
BEGIN
IF (CHARINDEX(SUBSTRING(@numCNP_FJ, @i, 1), '0123456789') > 0)
SET @txtNumero = CONCAT(@txtNumero, SUBSTRING(@numCNP_FJ, @i, 1));
SET @i = @i + 1;
END

-- SE A INFORMAÇÃO FOR DE UM CADASTRO NACIONAL DE PESSOA JURÍDICA...
IF (CAST(LEN(@txtNumero) AS INTEGER) = 14)
BEGIN

SET @i = 1;
SET @intCalDig_1 = 0;
SET @intCalDig_2 = 0;
-- Coleta do primeiro dígito verificador CGC
SET @intNumDig_1 = CAST(SUBSTRING(@txtNumero, 13, 1) AS INTEGER);
SET @intNumDig_2 = CAST(SUBSTRING(@txtNumero, 14, 1) AS INTEGER);
SET @txtNumero = SUBSTRING(@txtNumero, 1, 12);

-- Calculo do CNP-Jurídica...
WHILE NOT (@i > 12)
BEGIN
SET @intCalDig_1 = @intCalDig_1 + (CAST(SUBSTRING(@txtNumero, @i, 1) AS INTEGER) * CAST(SUBSTRING('543298765432', @i, 1) AS INTEGER));
SET @i = @i + 1;
END

SET @intCalDig_1 = (@intCalDig_1 % 11);

IF (@intCalDig_1 = 0) OR (@intCalDig_1 = 1)
SET @intCalDig_1 = 0;
ELSE
SET @intCalDig_1 = 11 - @intCalDig_1;

-- Coleta do segundo dígito verificador do CGC
SET @txtNumero = @txtNumero + CAST(@intCalDig_1 AS CHAR(1));
SET @i = 1;

WHILE NOT (@i > 13)
BEGIN
SET @intCalDig_2 = @intCalDig_2 + (CAST(SUBSTRING(@txtNumero, @i, 1) AS INTEGER) * CAST(SUBSTRING('6543298765432', @i, 1) AS INTEGER));
SET @i = @i + 1;
END

SET @intCalDig_2 = (@intCalDig_2 % 11);

IF (@intCalDig_2 = 0) OR (@intCalDig_2 = 1)
SET @intCalDig_2 = 0;
ELSE
SET @intCalDig_2 = 11 - @intCalDig_2;

-- Retorno do calculo do CNP-Jurídica..
IF (@intCalDig_1 = @intNumDig_1) AND (@intCalDig_2 = @intNumDig_2)
SET @vchRetorno = 'V|J|'+ SUBSTRING(@txtNumero,1,2) + '.' + SUBSTRING(@txtNumero,3,3) + '.' + SUBSTRING(@txtNumero,6,3) + '/' + SUBSTRING(@txtNumero,9,4) + '-' + CAST(@intCalDig_1 AS CHAR(1)) + CAST(@intCalDig_2 AS CHAR(1));
ELSE
SET @vchRetorno = 'F|J|CNP-J Dígito:' + CAST(@intCalDig_1 AS CHAR(1)) + CAST(@intCalDig_2 AS CHAR(1));
-- Retorna o Resultado...
IF (SUBSTRING(@vchRetorno, 1, 1) = 'V') AND (SUBSTRING(@txtNumero, 1, 11) = SUBSTRING(@txtNumero, 3, 11))
BEGIN
SET @vchRetorno = 'V|I|CNP-J Invalido';
-- PRINT N'Cadastro de pessoa incorreto!';
END
-- Finalizando o processo...
END ELSE
-- SE A INFORMAÇÃO FOR DE UM CADASTRO NACIONAL DE PESSOA FÍSICA...
IF (CAST(LEN(@txtNumero) AS INTEGER) = 11)
BEGIN

SET @i = 1;
SET @intCalDig_1 = 0;
SET @intCalDig_2 = 0;
-- Coleta do primeiro dígito verificador CPF..
SET @intNumDig_1 = CAST(SUBSTRING(@txtNumero, 10, 1) AS INTEGER);
SET @intNumDig_2 = CAST(SUBSTRING(@txtNumero, 11, 1) AS INTEGER);
SET @txtNumero = SUBSTRING(@txtNumero, 1, 9);

-- Calculo do CNP-Física...
WHILE NOT (@i > 9)
BEGIN
SET @intCalDig_1 = @intCalDig_1 + (CAST(SUBSTRING(@txtNumero, @i, 1) AS INTEGER) * (11 - @i));
SET @i = @i + 1;
END

SET @intCalDig_1 = (@intCalDig_1 % 11);

IF (@intCalDig_1 = 0) OR (@intCalDig_1 = 1)
SET @intCalDig_1 = 0;
ELSE
SET @intCalDig_1 = 11 - @intCalDig_1;

-- Coleta do segundo dígito verificador CPF..
SET @txtNumero = @txtNumero + CAST(@intCalDig_1 AS CHAR(1));
SET @i = 1;

WHILE NOT (@i > 10)
BEGIN
SET @intCalDig_2 = @intCalDig_2 + (CAST(SUBSTRING(@txtNumero, @i, 1) AS INTEGER) * (12 - @i));
SET @i = @i + 1;
END

SET @intCalDig_2 = (@intCalDig_2 % 11);

IF (@intCalDig_2 = 0) OR (@intCalDig_2 = 1)
SET @intCalDig_2 = 0;
ELSE
SET @intCalDig_2 = 11 - @intCalDig_2;

-- Retorno do calculo do CNP-Física...
IF (@intCalDig_1 = @intNumDig_1) AND (@intCalDig_2 = @intNumDig_2)
SET @vchRetorno = 'V|F|' + SUBSTRING(@txtNumero,1,3) + '.' + SUBSTRING(@txtNumero,4,3) + '.' + SUBSTRING(@txtNumero,7,3) + '-' + CAST(@intCalDig_1 AS CHAR(1)) + CAST(@intCalDig_2 AS CHAR(1));
ELSE
SET @vchRetorno = 'F|F|CNP-F Dígito:' + CAST(@intCalDig_1 AS CHAR(1)) + CAST(@intCalDig_2 AS CHAR(1));
-- Retorna o resultado...
IF (SUBSTRING(@vchRetorno, 1, 1) = 'V') AND (SUBSTRING(@txtNumero, 1, 8) = SUBSTRING(@txtNumero, 3, 8))
BEGIN
SET @vchRetorno = 'V|I|CNP-F Invalido';
-- PRINT N'Cadastro de pessoa incorreto!';
END
-- Finalizando o processo...
END
-- Retorno do calculo do Cadastro Nacional de Pessoa...
RETURN CASE @intTipo WHEN 0 THEN SUBSTRING(@vchRetorno, 1, 1)
WHEN 1 THEN SUBSTRING(@vchRetorno, 3, 1)
WHEN 2 THEN SUBSTRING(@vchRetorno, 5, 20)
WHEN 3 THEN REPLACE(SUBSTRING(@vchRetorno, 1, 3), '|', '')
ELSE @vchRetorno END;
-- Retorno do resultado...
END;

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar