Avatar billede madsokist Nybegynder
04. februar 2002 - 12:24 Der er 18 kommentarer og
2 løsninger

ignore case

Hejsa

Jeg vil slette en bruger fra min database - men det sker ikke af og til fordi brugere kan finde på at skrive med store bogstaver...

ex
masser@hotmail.com != MASSER@HOTMAIL.COM

udtrykket er som følger:
"DELETE FROM Spammail WHERE Email = 'noget@haps.dk'"

hvordan får jeg den til at ignorere store/små bogstaver - er der ikke en parameter der hedder IGNORE CASE?

Madsokist
Avatar billede teepee Nybegynder
04. februar 2002 - 12:31 #1
DELETE FROM Spammail WHERE upper(Email) = upper('noget@haps.dk')
Avatar billede proaccess Nybegynder
04. februar 2002 - 12:32 #2
Du kan evt. prøve med LCase(), som laver alt om til lower-case

"DELETE FROM Spammail WHERE LCase(Email) = 'noget@haps.dk'"
Avatar billede teepee Nybegynder
04. februar 2002 - 12:35 #3
Madsokist => Nej der er ingen parameter, du skal gøre som jeg svarede
Avatar billede madsokist Nybegynder
04. februar 2002 - 12:38 #4
Nope - for så går jeg jo kun efter store bogstaver.

Jeg har en database med en del brugere i .. og jeg vil have udtrykket til at slette brugerne - selv hvis de har skrevet store bogstaver

antag at brugeren MAFIOSO@hotmail.com vil slette sin adresse, men skiver mafioso@hotmail.com i stedet... her fejler mit script... den sletter ikke brugeren da han er repræsenteret i DB med store bogstaver.

Håber det bragte lys over sagen
Avatar billede proaccess Nybegynder
04. februar 2002 - 12:41 #5
Det er afhængigt af hvilken specifik database, vi snakker om... Der er altid en funktion, som kan sætte en tekst-streng i enten lower eller upper-case, det gælder så om at sætte begge dele (både din registrerede værdi og check-værdien) i ens case... og så lave sammenligningen...
Avatar billede proaccess Nybegynder
04. februar 2002 - 12:48 #6
Som vi sagde:

"DELETE FROM Spammail WHERE LCase(Email) = LCase('noget@haps.dk')"
Avatar billede madsokist Nybegynder
04. februar 2002 - 12:54 #7
Det er en Oracle database
Avatar billede proaccess Nybegynder
04. februar 2002 - 13:02 #8
Oracle har funktionen LOWER(), som kan bruges...

"DELETE FROM Spammail WHERE LOWER(Email) = LOWER('noget@haps.dk')"
Avatar billede teepee Nybegynder
04. februar 2002 - 13:16 #9
proaccess = > gider du lige forklare hvad forskellen er på at sætte det hele i lower og det hele i upper, siden du bliver ved med at skrive det samme som mig?
Avatar billede teepee Nybegynder
04. februar 2002 - 13:18 #10
Madsokist => skriv nu bare hvad der står og lad være med at tænke videre over det. Så vil du se at MAFIOSO@hotmail.com bliver slettet ved indtastningning af mafioso@hotmail.com
Avatar billede madsokist Nybegynder
04. februar 2002 - 13:29 #11
Jeg har for længst afprøvet alle jeres forslag - og det sidste fra den proaccess virker efter hensigten :o) så den accepterer jeg.

Men jeg kan vel kaste lidt points efter jer begge - hvis det ellers er noget i går op i.

PS: Tænk ikke videre over hvad der står - du kan tro nej - jeg slår alt op før jeg prøver noget af.

TAK til jer begge to ;o)
Madsokist
Avatar billede teepee Nybegynder
04. februar 2002 - 13:30 #12
Madsokist = > Hvis du har rigtigt mange email adresser i systemet kan jeg anbefale at du laver en ekstra kolonne med upper/lower værdien i, og du benytter denne kolonne til at slå op i basen med (husk index på UEmail) For eks.:

Id  Email                  UEmail
1    mafioso@hotmail.com    MAFIOSO@HOTMAIL.COM
2    TesT@sol.dk            TEST@SOL.DK
..  ...                    ...

Delete from tabel where UEmail = upper('mafioso@hotmail.com')
Avatar billede madsokist Nybegynder
04. februar 2002 - 13:40 #13
jeg har en 20.000 styks -

men det er ikke en liste jeg bruger til at lave ret mange opslag i, så jeg mener ikke at det er af ret stor prioritet lige nu. Men det er fordi jeg har lidt småtravlt.

Tak for rådet - jeg gemmer den lige just in case ...

Øhh- fik i nogle points???? jeg kan stadig acceptere svarene?
Avatar billede madsokist Nybegynder
04. februar 2002 - 13:51 #14
OHO - SÅDAN JOHAN
Avatar billede proaccess Nybegynder
04. februar 2002 - 13:57 #15
>teepee: det er da ingen løsning at opbevare oplysningen dobbelt... Du skal istedet råde til at konvertere til enten lower eller uppercase ved indlægning af data i databasen...

MEN du har ellers fuldstændigt ret, der er absolut ingen forskel på upper og lower case, i dette spørgsmål... MEN som hovedregel er ting på internettet i lowercase... (alt andet lige, og i en idel verden...)  ;-)
Avatar billede teepee Nybegynder
04. februar 2002 - 14:25 #16
proaccess => sludder, hvis brugeren skriver HitMeInTheFace@hotmail.com skal du selvfølgelig kunne vise denne mail for brugeren. Til gengæld er den ikke sjov at søge på og DERFOR skal adressen ligge dobbelt, nemlig 1) som brugeren skrev den og skal have vist på skærmen, og 2) den man slår op i basen efter.
Avatar billede teepee Nybegynder
04. februar 2002 - 14:28 #17
Et praktisk eksempel kunne være en adresse database. I en sådan vil der typisk være både bynavn OG upper_bynavn, landenavn OG upper_landenavn osv.
Avatar billede proaccess Nybegynder
04. februar 2002 - 14:34 #18
Jeg mener ikke at "Postmand Per" kommer hurtigere frem, hvis jeg skriver ODENSE i stedet for Odense...

Dit eksempel med e-mail adressen er dog lidt mere iøjefaldende...
Avatar billede proaccess Nybegynder
04. februar 2002 - 14:35 #19
MEN i bund og grund, er det jo bare et spørgsmål om størrelse på DB kontra performance...
Avatar billede teepee Nybegynder
04. februar 2002 - 14:36 #20
yep, skal brugerne vente lidt på en runtime konvertering eller skal vi indkøbe nogle gb ekstra harddisk
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