PeddaMedlem sedan juni 20006 032 inlägg Har ett mystiskt fel på en SQL fråga.
Databasen är Access 2003.
Villkoret
WHERE r.ref_hardware = 7 AND (f.engine = '' OR f.engine = 'Diesel')
returnerar bara dom rader där engine är Diesel, inte några där engine saknar värde.
Samma villkor, men på en annat fält
WHERE r.ref_hardware = 7 AND (f.rpm = '' OR f.rpm = 'VRPM')
returnerar både tomma fält och där värdet är VRPM.
Båda fälten i databasen är av samma data typ mm.
Fattar inte varför jag får olika resultat. Men förhoppningsvis förstår någon av er varför.
Kanske en uppenbar fråga, men är du säker på att et finns rader som har både ref_hardware = 7 och engine = ''? Ibland är det de mest uppenbara sakerna som felar.
Edit: Kan det vara så att f.engine är satt till null (eller ' ' eller dylikt) istället för '' på raderna ifråga?
PeddaMedlem sedan juni 20006 032 inlägg japp, helt säker.
Gör jag den andra sökningen på 'rpm' så har jag resultat därifrån där engine är tom.
Om du söker på r.ref_hardware = 7 AND f.engine = '' eller t.o.m. bara f.engine = ''? (För att luska ut exakt vad som felar.)
PeddaMedlem sedan juni 20006 032 inlägg Båda försöken returnerar ingenting
Bifogar screenshot från Access
@ndersMedlem sedan juni 200032 969 inlägg Jag är nog lite inne på nitros NULL-spår.
Testa:
WHERE r.ref_hardware = 7 AND (f.engine = '' OR f.engine IS NULL OR f.engine = 'Diesel')
mvh
PeddaMedlem sedan juni 20006 032 inlägg Nu har vi kommit närmare.
Kolla engine med IS NULL funkar.
men...
rpm funkar inte med IS NULL, utan jag måste använda = ''
Så någon skillnad är det mellan fälten.
/red
Men jag kan ju köra med snabelns förslag att kolla både '' och IS NULL på fälten så är det löst
@ndersMedlem sedan juni 200032 969 inlägg tja, funkar det med '' så är det lagrat en tom sträng i fältet - funkar det med is null så är det lagrat som NULL i fältet. Så finns båda alternativen så får du kolla mot båda - om dessa båda skall hanteras likadant.
Mvh