LIKE is a string comparison. In order to do it, MySQL has to convert the
integer column into a string *before* it can test the string for a match.
MySQL is not clever enough to know that a string consisting entirely of
digits is compatible with an integer - as far as it is concerned "123%" is
the same as "mqa%". Furthermore, if you think if what you would have to do
if the table were on paper, you will see that it is not a trivial problem.
You are treating your data as a string. the fact that it is a string
consisting entirely of digits is irrelevant. You should therefore store it
as a string. If you don't need to index it as an integer, MySQL can convert
it to an integer on retrieval (try "colname+0"). If you need to have it
indexed both as an integer and as a string, the only thing I can think is
for you to break normalisation and store it twice - with consequent effects
on apps which insert/update records.
Alec
-----------------------------------------------
Hello
I have a table with an intger column called ID. I have
an index on it.
Now I want to get a result with all the rows whos ID
values start with lets say 12....i.e. I want all the
IDs with data -
12
123
1234
..........
I am using this query....
select * from tablename where id like '123%'
It is returning me correct results...but the query
does not seem to be using the INDEX?
My question is ... does MySQL not uses INDEX when we
execute a LIKE command on a NUMERIC data....
Is there any better solution to this query?
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:
http://lists.mysql.com/[EMAIL PROTECTED]
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]