/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Hvordan evaluerer MySQL denne?
Fra : Morten


Dato : 12-06-07 09:27


Hej. Jeg faldt over nedenstående i min logfil, det er noget SQL der er
genereret af en komponent jeg benytter. Nogen der har et bud på, hvordan
MySQL evalierer WHERE clausen? Jeg tænker på det account_id der står og
flagrer..

SELECT * FROM departments
WHERE (account_id AND (lft > 6) and (rgt < 11))
ORDER BY lft



Morten


 
 
Michael Zedeler (12-06-2007)
Kommentar
Fra : Michael Zedeler


Dato : 12-06-07 09:43

Morten wrote:
>
> Hej. Jeg faldt over nedenstående i min logfil, det er noget SQL der er
> genereret af en komponent jeg benytter. Nogen der har et bud på, hvordan
> MySQL evalierer WHERE clausen? Jeg tænker på det account_id der står og
> flagrer..
>
> SELECT * FROM departments
> WHERE (account_id AND (lft > 6) and (rgt < 11))
> ORDER BY lft

Uden at vide det konkret, ville jeg formode at account_id bliver
behandlet som en boolsk værdi. Præcis hvornår den er sand eller falsk må
du selv undersøge.

Mvh. Michael.

Morten (12-06-2007)
Kommentar
Fra : Morten


Dato : 12-06-07 10:15

Michael Zedeler wrote:
> Morten wrote:
>>
>> Hej. Jeg faldt over nedenstående i min logfil, det er noget SQL der er
>> genereret af en komponent jeg benytter. Nogen der har et bud på,
>> hvordan MySQL evalierer WHERE clausen? Jeg tænker på det account_id
>> der står og flagrer..
>>
>> SELECT * FROM departments
>> WHERE (account_id AND (lft > 6) and (rgt < 11))
>> ORDER BY lft
>
> Uden at vide det konkret, ville jeg formode at account_id bliver
> behandlet som en boolsk værdi. Præcis hvornår den er sand eller falsk må
> du selv undersøge.

Du har ret. Jeg er lidt overrasket over det, sikkert fordi mine vaner er
fra dengang man eksplicit sammenlignede med 0/1 for boolsk evaluering.

mysql> create table my_test (foo integer, bar integer);
Query OK, 0 rows affected (0.02 sec)

mysql> insert into my_test values (1, null);
Query OK, 1 row affected (0.00 sec)

mysql> select * from my_test where foo;
+------+------+
| foo | bar |
+------+------+
| 1 | NULL |
+------+------+
1 row in set (0.00 sec)

mysql> select * from my_test where bar;
Empty set (0.00 sec)

mysql> insert into my_test values (2, 0);
Query OK, 1 row affected (0.00 sec)

mysql> select * from my_test where bar;
Empty set (0.00 sec)




Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409073
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste