lördag 21 november 2009

PHP/MySQL: Jämförelse större/mindre mellan variabler av typ varchar och int

pseduo-kod:

variabelVarchar = 111;
variabelInteger = 12;

if(variabelInteger > variabelVarchar) {
echo "sant";
}

Visar inte alls "sant" - många tror motsatsen - detta för att en siffer-variabel av formatet varchar (t ex i en mysql-databas) ska behandlas och jämföras som en strängvariabel.

Varchar är en sträng - men likförbaskat så jämförs den som det faktiska värdet (även om det tar lite längre tid då processorn måste behandla varje enskilt tecken...)

Så denna algoritm är alltså "fel"; jämförelse med tecken-placering för teckenplacering. I exemplet jämförs först om 1 är olik 1, vid ja går den vidare till nästa siffra där 2>1 alltså blir det "sant". Nix - den behandlas som en integer i jämförelsen. Inget "sant" visas...

Inga kommentarer:

Skicka en kommentar