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