Máscara de cpf no SQL

Bom dia pessoal, estava no URI onlinde judge tentando resolver uma questão de SQL que pede que uma máscara de cpf seja feita,segue o link para acompanhamento da questão

Eu tentei realizar a questão com o seguinte código > SELECT SUBSTRING(natural_person.cpf,1,3),’.’,SUBSTRING(natural_person.cpf,5,7),’.’,SUBSTRING(natural_person.cpf,9,11),’-’,SUBSTRING(natural_person.cpf,12,13)
FROM natural_person;

Porém na submissão ele me disse que a questão estava com 25% de erro, Vocês poderiam me dar um norte a respeito do código, ou de alguma função utilizada para realizar máscaras no SQL ? É a primeira vez que me deparo com “mascaras”.

Não parei pra ver a questão, mas vc precisa de um CONCAT pra juntar o q fez:

SELECT CONCAT(SUBSTRING...) FROM natural_person;

Do jeito que está, vc criou várias colunas sendo que será somente uma, a do cpf formatado…

1 curtida

Diminuiu a porcentagem de erro, mas ainda diz que tá errado, eu devo estar errando em algo na hora de retornar o cpf das respectivas pessoas da tabela, vou continuar tentando aqui. Obrigado pela dica do CONCAT :+1:

Acho q ja percebi onde está errando… quando se usa substring como aqui:

SUBSTRING(natural_person.cpf,1,3)

vc definiu que quer a partir da primeira letra na string, tirar 3 letras, ou seja, 1,2 e 3… ja quando vc usa:

SUBSTRING(natural_person.cpf,5,7) 

Esta pedindo a partir da 5º letra, retirar 7 e está errado, deveria ao meu ver:

SUBSTRING(natural_person.cpf,4,3) # 4 e não 5 como previu!

pois o substring trabalha assim:

SUBSTRING(texto, char_inicio, quantos_chars_retornar)

e não assim:

SUBSTRING(texto, inicio, fim)

pegou a ideia? mais exemplos aqui

https://www.w3schools.com/sql/func_mysql_substring.asp

2 curtidas

Entendi perfeitamente, muito obrigado :slight_smile:.

1 curtida
SELECT CONCAT(SUBSTRING(cpf,1,3),'.',
              SUBSTRING(cpf,4,3),'.',
              SUBSTRING(cpf,7,3),'-',
              SUBSTRING(cpf,10,2))
FROM natural_person; 

O que deu certo pra mim, foi esse pedaço de código eu estava errando na hora de puxar o campo e no final , porque eu coloquei pra ele puxar um valor que ja tinha sido mostrado kkk, mas valeu pela ideia brother.

2 curtidas