Ainda bem que da base veio uma string, e você consegue saber que a diferença é 11 ou 14 caracteres…
Em alguns lugares os DBAs definem um campo único para CPF e CNPJ (argh), definem esse campo como numérico (argh argh) e ainda por cima não põem um “flag” indicando que o campo é um CPF ou um CNPJ (argh argh argh).
Então às vezes você não consegue saber se o raio do número é um CPF ou CNPJ, porque existem vários casos (parece que é um quinto ou um nono dos casos possíveis, mas não cheguei a fazer um estudo completo) em que os algoritmos de validação de CPF e CNPJ retornam OK para o mesmo número. Você então fica meio “no mato sem cachorro…”