webForumDet fria alternativet

Urval som inte ger några resultat

3 svar · 1 054 visningar · startad av prplxr

prplxrMedlem sedan juni 2012582 inlägg
#1

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

Använd IS NULL istället för =NULL

nitro2k01Medlem sedan aug. 20039 342 inlägg
#3

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

*Tar på mig struten och ställer mig i hörnet*

Tack! :)

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