Usuário com melhor resposta
Estrutura CPF

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.NOMEObrigado a todos e ótima semana para todos.
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
- Sugerido como Resposta Durval RamosModerator sábado, 7 de março de 2015 04:13
- Marcado como Resposta Durval RamosModerator quinta-feira, 30 de abril de 2015 06:02
-
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.
- Editado Bruno da Silva Barros Alves segunda-feira, 9 de fevereiro de 2015 12:17
- Sugerido como Resposta Durval RamosModerator sábado, 7 de março de 2015 04:13
- Marcado como Resposta Durval RamosModerator quinta-feira, 30 de abril de 2015 06:02
-
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"- Sugerido como Resposta Roberto F FonsecaModerator terça-feira, 10 de fevereiro de 2015 14:14
- Marcado como Resposta Durval RamosModerator quinta-feira, 30 de abril de 2015 06:02
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
- Sugerido como Resposta Durval RamosModerator sábado, 7 de março de 2015 04:13
- Marcado como Resposta Durval RamosModerator quinta-feira, 30 de abril de 2015 06:02
-
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.
- Editado Bruno da Silva Barros Alves segunda-feira, 9 de fevereiro de 2015 12:17
- Sugerido como Resposta Durval RamosModerator sábado, 7 de março de 2015 04:13
- Marcado como Resposta Durval RamosModerator quinta-feira, 30 de abril de 2015 06:02
-
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"- Sugerido como Resposta Roberto F FonsecaModerator terça-feira, 10 de fevereiro de 2015 14:14
- Marcado como Resposta Durval RamosModerator quinta-feira, 30 de abril de 2015 06:02