none
Estrutura CPF RRS feed

  • Pergunta

  • Amigos bom dia!

    Preciso que nessa SQL a coluna CPF venha com a estrutura correta, com os pontos e traço.

    SELECT

    PPESSOA.CPF  CPF

     FROM PFUNC F 
    INNER JOIN PPESSOA ON PPESSOA.CODIGO = F.CODPESSOA
    INNER JOIN PFPERFF ON PFPERFF.CODCOLIGADA = F.CODCOLIGADA AND PFPERFF.CHAPA = F.CHAPA
    WHERE F.CODCOLIGADA = '1'
    AND PFPERFF.ANOCOMP = '2015' AND PFPERFF.MESCOMP = '01' AND PFPERFF.NROPERIODO = '6'
    AND F.CODBANCOPAGTO  IS NOT NULL
    ORDER BY PPESSOA.NOME 

    Obrigado a todos e ótima semana para todos. 

    segunda-feira, 9 de fevereiro de 2015 11:43

Respostas

  • segue um exemplo:

    declare @cpf char(11)
    set @cpf = '11122233345'
      
    select  stuff(stuff(stuff(@cpf,10,0,'-' ),7,0,'.'),4,0,'.')


    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino

    segunda-feira, 9 de fevereiro de 2015 12:13
  • Bom dia Ronnie,

    Sugiro que você utilize uma função, dessa forma poderá reaproveitá-la mais facilmente.

    Segue exemplo:

    create function formatarCPF(@cpf char(11))
    			 returns char(14)
    		as
    		begin
    			 declare @retorno varchar(14)
    			 set @retorno = substring(@cpf,1,3) + '.' + substring(@cpf,4,3) + '.' + substring(@cpf,7,3) + '-' + substring(@cpf,10,2) 
    			 return @retorno
    		end

    Depois é só chamar na sua consulta:

    SELECT
    
    dbo.formatarCPF(PPESSOA.CPF)  CPF
    
     FROM PFUNC F 
    INNER JOIN PPESSOA ON PPESSOA.CODIGO = F.CODPESSOA
    INNER JOIN PFPERFF ON PFPERFF.CODCOLIGADA = F.CODCOLIGADA AND PFPERFF.CHAPA = F.CHAPA
    WHERE F.CODCOLIGADA = '1'
    AND PFPERFF.ANOCOMP = '2015' AND PFPERFF.MESCOMP = '01' AND PFPERFF.NROPERIODO = '6'
    AND F.CODBANCOPAGTO  IS NOT NULL
    ORDER BY PPESSOA.NOME 


    Att, Bruno Silva.


    segunda-feira, 9 de fevereiro de 2015 12:16
  • Ronnie,

    Se você utiliza o SQL Server 2012, então você poderá utilizar a função de sistema FORMAT. Com o tratamento correto você poderá de modo simples obter a formatação e mantendo inclusive para CPF's "diferenciados" que possuem "zero" no seu início ou em seu fim (inclusive com uso com datatype "numérico").

    Veja abaixo um exemplo deste script T-SQL:

    DECLARE @CPFComZero FLOAT = 01234567890
    DECLARE @CPFSemZero FLOAT = 11122233344
    
    SELECT FORMAT(@CPFComZero, '0##"."###"."###"-"##')  AS CPF_COM_ZEROS,
    	FORMAT(@CPFSemZero, '0##"."###"."###"-"##') AS CPF_SEM_ZEROS;
    GO
    

    Segue abaixo a Evidência de Testes desta execução:


    Para maiores informações veja:

    https://msdn.microsoft.com/pt-br/library/hh213505.aspx

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    segunda-feira, 9 de fevereiro de 2015 19:12
    Moderador

Todas as Respostas

  • segue um exemplo:

    declare @cpf char(11)
    set @cpf = '11122233345'
      
    select  stuff(stuff(stuff(@cpf,10,0,'-' ),7,0,'.'),4,0,'.')


    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino

    segunda-feira, 9 de fevereiro de 2015 12:13
  • Bom dia Ronnie,

    Sugiro que você utilize uma função, dessa forma poderá reaproveitá-la mais facilmente.

    Segue exemplo:

    create function formatarCPF(@cpf char(11))
    			 returns char(14)
    		as
    		begin
    			 declare @retorno varchar(14)
    			 set @retorno = substring(@cpf,1,3) + '.' + substring(@cpf,4,3) + '.' + substring(@cpf,7,3) + '-' + substring(@cpf,10,2) 
    			 return @retorno
    		end

    Depois é só chamar na sua consulta:

    SELECT
    
    dbo.formatarCPF(PPESSOA.CPF)  CPF
    
     FROM PFUNC F 
    INNER JOIN PPESSOA ON PPESSOA.CODIGO = F.CODPESSOA
    INNER JOIN PFPERFF ON PFPERFF.CODCOLIGADA = F.CODCOLIGADA AND PFPERFF.CHAPA = F.CHAPA
    WHERE F.CODCOLIGADA = '1'
    AND PFPERFF.ANOCOMP = '2015' AND PFPERFF.MESCOMP = '01' AND PFPERFF.NROPERIODO = '6'
    AND F.CODBANCOPAGTO  IS NOT NULL
    ORDER BY PPESSOA.NOME 


    Att, Bruno Silva.


    segunda-feira, 9 de fevereiro de 2015 12:16
  • Ronnie,

    Se você utiliza o SQL Server 2012, então você poderá utilizar a função de sistema FORMAT. Com o tratamento correto você poderá de modo simples obter a formatação e mantendo inclusive para CPF's "diferenciados" que possuem "zero" no seu início ou em seu fim (inclusive com uso com datatype "numérico").

    Veja abaixo um exemplo deste script T-SQL:

    DECLARE @CPFComZero FLOAT = 01234567890
    DECLARE @CPFSemZero FLOAT = 11122233344
    
    SELECT FORMAT(@CPFComZero, '0##"."###"."###"-"##')  AS CPF_COM_ZEROS,
    	FORMAT(@CPFSemZero, '0##"."###"."###"-"##') AS CPF_SEM_ZEROS;
    GO
    

    Segue abaixo a Evidência de Testes desta execução:


    Para maiores informações veja:

    https://msdn.microsoft.com/pt-br/library/hh213505.aspx

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    segunda-feira, 9 de fevereiro de 2015 19:12
    Moderador