webForumDet fria alternativet

Konstigt problem med villkor

7 svar · 538 visningar · startad av Pedda

PeddaMedlem sedan juni 20006 032 inlägg
#1

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.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#2

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
#3

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.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#4

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
#5

Båda försöken returnerar ingenting

Bifogar screenshot från Access

access.png
@ndersMedlem sedan juni 200032 969 inlägg
#6

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
#7

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
#8

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

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)