Jeg skal have lavet en kodning til at finde ugyldige emailadresser. Dvs. adresser der indeholder ugyldige tegn samt adresser der mangler @ eller . Jeg har forsøgt mig med en kodning med "not like" UNION "like", hvilket finder bla. adresser med æ,ø,å,/...osv., samt manglende @ og manglende .(punktum). Er der nogen der har et forslag til en sådan kodning?
Jeg glemte at skrive, at jeg arbejder på en Oracle 8. Mine brugere skal dagligt fra SQL+ selv kunne danne fil med brugernavn, ændringsdato, forkert e-mail. Så kodningen skal laves i SQL+. Min base er et godt stykke over 150.000 unikke records.
Der er jo temmelig mange regler at holde styr på. Hvad med at lave en stored funktion der returnerer 0/1 og lave et funktionsbaseret index på kolonnen. Dernæst bare spørge på WHERE funktionsnavn(kolonnenavn)=0
Afhængig af hvor kompliceret du ønsker at lave dine valideringsregler, kunne du oprette en tabel med hhv. ønskede og uønskede tegn i emailadresserne, fx
create table emailchars (validtype varchar2(1) not null, thechar varchar2(1) not null );
og så lave følgende som en del af fx en stored proc:
select distinct a.username, a.emailadr from usertable a, emailchars b where b.validtype = '-' and instr(a.emailadr), b.thechar) > 0 or b.validtype = '+' and instr(a.emailadr), b.thechar) = 0
Tanken er at tegn med validtype - (minus) er de uønskede tegn i emailadr og + de påkrævede. Bemærk at . (punktum) ikke er påkrævet i emailadresser.
Bemærk også brugen af DISTINCT for ikke at få brugernavne, som forbryder sig mod flere regler, gentaget i resultatet.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.