prplxrMedlem sedan juni 2012582 inlägg Så var det dags igen. Återigen sitter jag och har stirrat flera timmar utan att se vad jag kan ha gjort för fel. Har en SQL-fråga som jag tycker BORDE ge en massa resultat som ser ut som följer:
SELECT * FROM tblforetag
WHERE (id = 'test' OR foretag LIKE '%test%')
AND (tillhoer_s = NULL OR tillhoer_s = 0)
LIMIT 50;
...fungerar inte.
SELECT * FROM tblforetag
WHERE (id = 'test' OR foretag LIKE '%test%')
LIMIT 50;
...fungerar dock.
tillhoer_s ser ur såhär:
`tillhoer_s` INT(11) NULL DEFAULT NULL
Någon som har någon idé?
metalboyMedlem sedan jan. 2005953 inlägg Använd IS NULL istället för =NULL
Du kan inte testa för NULL med =. NULL är ett specialvärde som du måste använda IS NULL för att testa mot. Vidare, har du faktiskt några rader där tillhoer_s = 0, eller testar du bara? Alla jämförelse med null, med "vanliga" operatorer returnerar false. Om en kolumn är NULL så är c = 0, c < 0, c > 0 och c <> 0 alla falska påståenden. (Samma sak för alla andra värden än 0 också.) Du får tänka dig att null är avsaknaden av ett värde, så vad du än jämför med så kan databasen inte uttala sig, och returnerar false.
Hursomhelst, kod för sakens skull:
SELECT * FROM tblforetag
WHERE (id = 'test' OR foretag LIKE '%test%')
AND (tillhoer_s IS NULL OR tillhoer_s = 0)
LIMIT 50;
prplxrMedlem sedan juni 2012582 inlägg *Tar på mig struten och ställer mig i hörnet*
Tack! :)