26. marts 2004 - 16:22Der er
14 kommentarer og 1 løsning
SQL fejl: AND kolonne NOT LIKE
Hej
Dette virker - jahuuuu:
"SELECT kundenavn, noter FROM kunde WHERE noter LIKE '%demo%'"
Men det gør dette ikke - ØV:
"SELECT kundenavn, noter FROM kunde WHERE noter LIKE '%demo%' AND demoTlf NOT LIKE '%true%'"
Sidstnævnte er måske syntakskorrekt, men der returneres intet. Jeg ved at der kun er én post i kolonnen demoTlf. demoTlf har datatypen tekst. Databasen er en Access (JET conn).
Jeg har netop erfaret at hvis jeg skriver alt andet end '%true%' fx '%hej%' eller '% %' så returneres netop den ene post der indeholder teksten true. Det må jo betyde at alle poster som ikke indeholder noget som helst ikke reagerer på NOT LIKE '%et-eller-andet%' Er det fordi jeg ikke kender til at oprette en database korrekt og at der måske skulle have været et Null i alle andre felter? Hmm.. eller skulle kolonnen have en anden datatype?
Hvis du vil havde den ud som indeholder true skal du ikke skrive NOT foran LIKE.
men true er reserveret ord til et Ja/Nej felt, måske det driller selvom man ikke har ' omkring i forbildelse med Ja/Nej felt, så det skulle umiddelbart ikke drille.
Nej jeg ønsker at få alle poster ud der indeholder strengen 'demo' i kolonnen noter men ikke de poster der indeholder strengen 'true' i kolonnen demoTlf. (Så derfor skriver jeg også NOT LIKE ved strengen 'true').
Jeg har så prøvet at teste NOT LIKE i egen sætning: strSQL = "SELECT kundenavn, noter FROM kunde WHERE demoTlf NOT LIKE '%true%'"
Det returnerer ingen ting! Selvom der er næsten 1000 poster der burde opbylde dette krav og kun 1 post der ikke opfylder det.
strSQL = "SELECT kundenavn, noter FROM kunde WHERE demoTlf NOT LIKE '%hej%'"
så returneres netop den post som indeholder strengen true. Så problemet må ligge i at de poster der intet indeholder ikke reagerer på NOT LIKE '%et-eller-andet%'. Damn. Hvorfor?
Har du evt. fundet ud af hvordan man søger på et tomt felt i Access? Problemet er opstået igen i en anden SQL-sætning.
Eksempel:
strSQL = " SELECT * FROM kunde INNER JOIN bruger ON kunde.brugerId = bruger.brugerId "&_ " WHERE postnr = '""' AND kunde.brugerId = " & Session("brugerId") & " "&_ " ORDER BY kunde.postnr, kunde.kundenavn ASC"
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.