BSi;
Yes, you are correct.
I think you found an important behavior in MySQL. Whether it is a bug or a feature
depends on what the developers choose
to do. If they revise the manual, it must be a feature. ;-)
I think MySQL evaluates your original SELECT statements like a 'short-circuit OR': As
soon as a TRUE result is found the
evaluation stops.
I did a very poor test because I only worked with the small set of data you attached
to your message. When I created two
more rows with slightly different values, my proposed SELECT statement returned all
rows instead of only the two that were
wanted.
My table now contains
+----------+
| nev |
+----------+
| Pokember |
| Pokxxber |
| pokember |
| pokxxber |
+----------+
All of the SELECT statements you tested before work exactly the same with this table
as you described.
The SELECT statement I proposed, returns all of the rows.
I have found that using the string functions works better for this test. Apparently
they do not short-circuit the same way.
The following two statements produce the same result as expected.
SELECT nev FROM hosoktest WHERE left(nev,4)='Poke' OR left(nev,4)='poke';
SELECT nev FROM hosoktest WHERE left(nev,8)='Pokember' OR left(nev,8)='pokember';
+----------+
| nev |
+----------+
| Pokember |
| pokember |
+----------+
SELECT nev FROM hosoktest WHERE left(nev,1)='P' OR left(nev,1)='p';
+----------+
| nev |
+----------+
| Pokember |
| Pokxxber |
| pokember |
| pokxxber |
+----------+
There were other SELECTs that I tried using this substring approach, but the behavior
was predictable so I haven't included
them here.
For the record, I am using mysql 3.23.43 on Mandrake-Linux 7.2
Regards,
Doug
On Fri, 28 Dec 2001 15:56:06 +0100, Barnabas BONA wrote:
>No, it works not. Maybe you thought the following:
>"SELECT nev FROM hosoktest WHERE nev IN ('pokember','Pokember');"
>It works but it's so strange...
>
>Ps: it's a feuture or a bug?
>
>Thanks,
>BSi
>
>Thursday, December 27, 2001, 7:52:37 AM, you wrote:
>> It works the way you want with this data when your query is written:
>
>> SELECT nev FROM hosoktest WHERE nev = ('pokember' OR 'Pokember');
>
>> Regards,
>> Doug
>
>
>
>> On Thu, 27 Dec 2001 01:33:57 +0100, Barnabas BONA wrote:
>
>>> If I execute the following select:
>>> SELECT nev FROM hosoktest WHERE nev = 'pokember' OR nev = \
>>> 'Pokember'
>>> I got only 'pokember' but 'Pokember' not...
>>>
>>> If I execute the following:
>>> SELECT nev FROM hosoktest WHERE nev = 'Pokember' OR nev = \
>>> 'pokember'
>>> I got only 'Pokember'.
>>>
>>> If I execute:
>>> SELECT nev FROM hosoktest WHERE nev = 'Pokember'
>>> I got correctly 'Pokember' only.
>>>
>>> If I execute:
>>> SELECT nev FROM hosoktest WHERE nev = 'pokember'
>>> I got correctly 'pokember' only.
>
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php