[firebase-br] Condição de comparação (String)
Eduardo Bahiense
eduardo em icontroller.com.br
Qua Fev 20 10:13:07 -03 2008
Olá Aron
Você tem que se basear nos casos comuns de valores inválidos.
Você deve começar por dar um 'select distinct cpf' para analisar os
padrões de mau preenchimento.
O próximo passo é montar um sql que traga todos, ou vá limpando. Ex.:
SELECT * FROM TABELA
WHERE
CPF IS NULL
OR CPF = ''
OR CPF CONTAINING '_'
OR CPF CONTAINING 'A'
Isto deve te trazer a maioria dos seus casos de mau preenchimento. Aí vc
analisa e, se for o caso, excuta:
UPDATE TABELA
SET CPF = NULL
WHERE
CPF = ''
OR CPF CONTAINING '_'
OR CPF CONTAINING 'A'
Agora vamos verificar os com máscara errada:
SELECT * FROM TABELA
WHERE
CPF IS NOT NULL
AND
(
SUBSTRING(CPF FROM 4 FOR 1 <> '.')
OR SUBSTRING(CPF FROM 8 FOR 1 <> '.')
OR SUBSTRING(CPF FROM 12 FOR 1 <> '-')
OR SUBSTRING(CPF FROM 14 FOR 1 = '')
)
Analise, se for o caso, UPDATE para NULL e continue o processo.
Podem haver casos em que o CPF esta com 14 digitos e sem formatação de
máscara. Daí dá para dar um UPDATE inserindo os caracteres da máscara
nas posições corretas com substring(1 for 3)||'.'||substring(4 for 3) ...
Depois de tudo é só pedir WHERE CPF IS NULL e pronto!
Não esqueça de fazer um backup de tudo antes !!!!!!!!
Abs
Eduardo
Felipe Aron escreveu:
> Olá pessoal como vai ?
> Tenho o seguinte problema:
>
> Tenho uma tabela de vendedores que possui o campo CPF, só que a base está
> "porca", e o campo não está formatado corretamente, ou seja, tem alguns
> registros que possui só números, outros com pontos e tracos, outros escritos
> "NAO TEM", outros somente com a formatação (___.___.___-__) e outros em
> branco...
>
> Quero criar uma SQL que retorne pra mim todos os vendedores que não tem CPF,
> ou seja, que não tem o campo preenchido corretamente com os números.
> O resultado dessa SQL terá que trazer todos com o campo CPF em branco, nulo
> e que só tenham formatação....
>
>
> OBS: Não quero validar o CPF, apenas trazer os que não tem os números no
> campo.
>
Mais detalhes sobre a lista de discussão lista