Recently I ran into a problem with 'LIKE' in mysql on Debian Sarge:

mysql> select VERSION();
+---------------------------+
| VERSION()                 |
+---------------------------+
| 4.1.11-Debian_4sarge2-log |
+---------------------------+
1 row in set (0.00 sec)

with the following table:

CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `username` varchar(64) collate latin2_hungarian_ci default NULL,
  ...
) ENGINE=MyISAM DEFAULT CHARSET=latin2 COLLATE=latin2_hungarian_ci

I get the following outputs:

mysql> select count(*) from user where username like 'o%';
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (0.00 sec)

mysql> select count(*) from user where username like 'or%';
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (0.00 sec)

mysql> select count(*) from user where username like 'ors%';
+----------+
| count(*) |
+----------+
|       89 |
+----------+
1 row in set (0.00 sec)

So the number of usernames which match "like 'o%'" is zero, while the number of matching lines for "like 'ors%'" is 89.

Moreover, the sum of the results of these two queries

select count(*) from user where username like 'a%';
select count(*) from user where username not like 'a%' or username is null;

is not the same for all letters of the alphabet:

letter like not-like sum

n       2304 59317 61621
o          0 60797 60797
p       3048 58573 61621

Any ideas?

Zoltan

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to