Como calcular a quantidade do dígito 9 entre 0 e 100
Muita gente começa errado nessa conta. A pergunta quanto 9 tem de 0 a 100 parece simples, mas o resultado depende se você está contando ocorrências do dígito ou quantos números contêm o algarismo 9. Vou explicar os dois cenários porque já vi gente perder tempo no trabalho por confundi-los. No primeiro caso, quando queremos saber quantas vezes o dígito 9 aparece em sequência numérica, a lógica é diferente de simplesmente multiplicar. De 0 a 99, temos dez grupos de dezenas. Em cada dezena, o 9 aparece como unidade uma vez: 9, 19, 29, 39, 49, 59, 69, 79, 89, 99. Isso dá 10 ocorrências só como unidade. Como dezena, o dígito 9 aparece nas casas de dez entre 90 e 99, que são 10 números. O 99 conta duas vezes porque tem o algarismo na unidade e também na dezena. Somando tudo: 10 mais 10 resulta em 20 ocorrências do dígito 9. Se incluir o 100, nada muda porque ele não tem o algarismo.
Quanto 9 tem de 0 a 100 na prática
Se a questão for apenas quantos números diferentes contêm pelo menos um 9, aí a resposta é 19. São esses: 9, 19, 29, 39, 49, 59, 69, 79, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99. O 99 entra na lista uma única vez porque a pergunta original pede quantidade de números, não de algarismos. Já tive um problema real com isso há uns dois anos. Estava migrando dados de uma planilha antiga onde os códigos de produto eram gerados automaticamente e precisava filtrar tudo que continha o dígito 9 em qualquer posição. O SQL que o outro desenvolvedor tinha escrito usava LIKE '%9%' mas estava faltando tratar casos onde o campo vinha como inteiro sem formatação. O resultado era que números como 190 e 901 eram ignorados porque a função convertia tudo para string sem preencher zeros à esquerda. A solução foi usar CAST(convert) para VARCHAR e depois aplicar a lógica de substring em vez de LIKE, o que reduziu o tempo de processamento de 4 horas para cerca de 20 minutos em lotes de 50 mil registros.
👉 Clique no botão abaixo para saber mais sobre o assunto!
O erro mais comum que vejo acontecer é achar que a resposta é 10. As pessoas contam só as unidades e esquecem as dezenas, ou então contam o 99 como um único evento em vez de reconhecer que ele carrega dois algarismos iguais. Outra pegadinha é esquecer que o intervalo de 0 a 100 inclui o próprio 100, que não altera o resultado mas muda o escopo da pergunta. Quando você precisa fazer essa contagem para ranges maiores, como de 0 a 1000, a fórmula combina análise posicional. Para cada posição decimal, o dígito aparece exatamente uma a cada dez números. Em 0 a 99, são 100 números total, e cada dígito de 0 a 9 aparece 20 vezes em cada posição individualmente se considerarmos todos os lugares. Mas quando falamos só do 9, a matemática fica mais direta porque não temos simetria perfeita entre todos os algarismos nas bordas do intervalo.
Se o objetivo é validar dados ou fazer auditoria de sequências, vale a pena testar com um range menor antes de automatizar. Colocar 0 a 20 no papel e contar manualmente leva 30 segundos e já mostra se a lógica do script está correta. Eu sempre faço isso antes de rodar processamentos em larga escala. Não existe uma ferramenta mágica que resolva tudo sozinho. O entendimento conceitual é o que evita retrabalho. Se precisar aplicar isso em Python, R ou SQL, a função de string split ou regex já faz o serviço, mas o gargalo quase sempre é a qualidade dos dados de entrada, não a complexidade do cálculo em si.