Avatar billede simsen Mester
31. januar 2012 - 14:53 Der er 6 kommentarer og
1 løsning

hente rækker hvor felt er null eller tom felt

Hej,

Jeg har et problem,jeg ikke helt kan huske hvordan jeg løste sidste gang.

Min tabel eksempel:
id  navn adresse postnr
1  Hans        7100
2  Jens Byvej  6000
3  Gert NULL    5000

Nu vil jeg lave en select der henter række 1 og 3 ud - altså med en parameter

adresse er lig med ''

Hvis jeg gør følgende får jeg kun række 1 (id 1) ud
SELECT id WHERE adresse = @adresse

Men jeg vil altså også have række to ud - altså den skal tage NULL som et blankt felt.

Hvordan får jeg både blanke og null værdier med ud når parametren siger '' (tom streng)?
31. januar 2012 - 14:59 #1
Hvis feltet kan have to forskellige værdier, '' og NULL, så er du nødt til at søge for begge.  Såsom:

adr1 = ''
adr2 IS NULL

SELECT id WHERE adresse = @adr1 OR adresse = @adr2
Avatar billede simsen Mester
31. januar 2012 - 15:14 #2
Hej Christian,

Det forstår jeg ikke helt, da jeg mener at kunne huske, at man kunne trække null felter med ud (kan det passe noget med coalesce?)

Den løsning du kommer med kan jeg ikke bruge, da det ikke kun drejer sig om ét felt men ca. 10 parametre/felter, der alle kan have værdien ''

Altså mine parametere kan have en værdi eller '' (blank) - hvis min parameter er '' skal den hente alle rækker ud, der har '' eller null værdi i feltet.
Avatar billede ramad Praktikant
31. januar 2012 - 15:18 #3
Sådan her?
COALESCE(Adresse, '') = @adr1
Avatar billede ramad Praktikant
31. januar 2012 - 15:19 #4
Doh brugte ikke lige din parameter - flot :)
SELECT id WHERE COALESCE(Adresse, '') = @adresse
Avatar billede simsen Mester
01. februar 2012 - 08:08 #5
ramad

Det var lige netop den jeg havde brug for - tak for hjælpen. Smid et svar og du får dine points :-)
Avatar billede ramad Praktikant
01. februar 2012 - 08:31 #6
svar smidt - godt at det kunne bruges .)
Avatar billede simsen Mester
01. februar 2012 - 14:14 #7
ramad

Yeps og jeg har endda i dag googlet mig frem til hvad det er at coalesce gør, så jeg næste gang måske også husker hvordan den skal bruges (ja, jeg ER kvinde og kan først hitte ud af at huske ting, når jeg ved hvorfor/hvordan og hvorledes)....

Til information (hvis jeg nu skulle glemme det alligevel)

En simpel sætning på en side;

coalesce er hvordan du vil håndtere null values i tabellen....

Altså hvad du vil sætte dem lig med - i mit tilfælde var det ''
men kunne så også f.eks. være en int, jeg så ville sætte til 0 som så bliver til:
SELECT id WHERE COALESCE(MyNumber, 0) = @myNumber
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