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
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 .
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