Avatar billede sjomka Nybegynder
25. februar 2003 - 17:09 Der er 6 kommentarer

Finde ugyldige emailadresser

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?
Avatar billede sjomka Nybegynder
25. februar 2003 - 17:45 #1
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.
Avatar billede arne_v Ekspert
25. februar 2003 - 22:10 #2
Jeg er ret sikker på, at det vil være meget nemmere i et rigtigt
programmerings-sprog: Java, C++, VB, C# whatever.
Avatar billede teepee Nybegynder
25. februar 2003 - 23:26 #3
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
Avatar billede hsloth Novice
27. februar 2003 - 09:42 #4
Her findes en metode der anvender regulære udtryk - det gør det også nemt at tilføje til reglen :

http://www.geocities.com/oranails/plsql/regexp.htm
Avatar billede hsloth Novice
27. februar 2003 - 14:11 #5
arne_v>
PL/SQL _er_ et rigtigt programmeringssprog . . .
Avatar billede olet Nybegynder
03. marts 2003 - 22:13 #6
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester