mysql 4.1.0 like с шаблоном %

Profic

just Profic (PHP5 BetaTeam)
mysql 4.1.0 like с шаблоном %

имеем файл след содержания:
[sql]
STATUS;

DROP TABLE IF EXISTS a;

CREATE TABLE a (
a VARCHAR(10) NOT NULL
) TYPE=MyISAM;

INSERT INTO a VALUES
('фыва'),
('Фыва'),
('фЫва'),
('фыВа'),
('фывА'),
('ФЫВА'),
('фывапролдж'),
('Фывапролдж'),
('фЫвапролдж'),
('фыВапролдж'),
('фывАпролдж'),
('фываПролдж'),
('фывапРолдж'),
('фывапрОлдж'),
('фывапроЛдж'),
('фывапролДж'),
('фывапролдЖ'),
('ФЫВАПРОЛДЖ');

SELECT * FROM a WHERE a LIKE '%фЫва%';
SELECT * FROM a WHERE a LIKE '%фЫв%';
SELECT * FROM a WHERE a LIKE 'фЫва%';
SELECT * FROM a WHERE a REGEXP 'фЫва';[/sql]
выводит (обращаем внимание на первый селект):
Код:
--------------
mysql4\bin\mysql  Ver 13.5 Distrib 4.1.0-alpha, for Win95/Win98 (i32)

Connection id:		60
Current database:	test
Current user:		profic@localhos
SSL:			Not in use
Server version:		4.1.0-alpha-max-nt
Protocol version:	10
Connection:		localhost via TCP/IP
Client characterset:	cp1251_bulgarian_ci
Server characterset:	cp1251_bulgarian_ci
TCP port:		3306
Uptime:			43 min 55 sec

Threads: 1  Questions: 642  Slow queries: 0  Opens: 46  
Flush tables: 1  Open tables: 2  Queries per second avg: 0.244
--------------

--------------
SELECT * FROM a WHERE a LIKE '%фЫва%'
--------------

a
фЫва
фЫвапролдж
--------------
SELECT * FROM a WHERE a LIKE '%фЫв%'
--------------

a
фыва
Фыва
фЫва
фыВа
фывА
ФЫВА
фывапролдж
Фывапролдж
фЫвапролдж
фыВапролдж
фывАпролдж
фываПролдж
фывапРолдж
фывапрОлдж
фывапроЛдж
фывапролДж
фывапролдЖ
ФЫВАПРОЛДЖ
--------------
SELECT * FROM a WHERE a LIKE 'фЫва%'
--------------

a
фыва
Фыва
фЫва
фыВа
фывА
ФЫВА
фывапролдж
Фывапролдж
фЫвапролдж
фыВапролдж
фывАпролдж
фываПролдж
фывапРолдж
фывапрОлдж
фывапроЛдж
фывапролДж
фывапролдЖ
ФЫВАПРОЛДЖ
--------------
SELECT * FROM a WHERE a REGEXP 'фЫва'
--------------

a
фыва
Фыва
фЫва
фыВа
фывА
ФЫВА
фывапролдж
Фывапролдж
фЫвапролдж
фыВапролдж
фывАпролдж
фываПролдж
фывапРолдж
фывапрОлдж
фывапроЛдж
фывапролДж
фывапролдЖ
ФЫВАПРОЛДЖ
Это нормально? Или у меня глюки?
 

Profic

just Profic (PHP5 BetaTeam)
На русских данных, когда в таблице есть слово по длинне (или совпадающее по буквам, не до конца понял) с тем, что в запросе, в котором используется с 2-х сторон %, то происходит данный глюк.
На английских данных повторить не получилось
 

Profic

just Profic (PHP5 BetaTeam)
Хм, потестил я это безобразие еще немного и вот что у меня получилось, комментарии, думаю, излишни.
Запросы:
[sql]
STATUS;

DROP TABLE IF EXISTS a;

CREATE TABLE a (
a VARCHAR(10) NOT NULL
) TYPE=MyISAM;

INSERT INTO a VALUES
('фыва'),
('Фыва'),
('фЫва'),
('фыВа'),
('фывА'),
('ФЫВА'),
('qWer'),
('QWER'),
('фывапролдж'),
('Фывапролдж'),
('фЫвапролдж'),
('фыВапролдж'),
('фывАпролдж'),
('фываПролдж'),
('фывапРолдж'),
('фывапрОлдж'),
('фывапроЛдж'),
('фывапролДж'),
('фывапролдЖ'),
('ФЫВАПРОЛДЖ'),
('qwerTyuiop'),
('QWERTYUIOP');

SELECT * FROM a WHERE a LIKE '%фываПролдж%';
SELECT * FROM a WHERE a LIKE '%фываПролд%';
SELECT * FROM a WHERE a LIKE '%фываП%';
SELECT * FROM a WHERE a LIKE '%фЫва%';
SELECT * FROM a WHERE a LIKE '%фЫв%';
SELECT * FROM a WHERE a LIKE 'фываПролдж%';
SELECT * FROM a WHERE a LIKE 'фЫва%';
SELECT * FROM a WHERE a REGEXP '.*фЫва.*';

SELECT * FROM a WHERE a LIKE '%qwerTyuiop%';
SELECT * FROM a WHERE a LIKE '%qWer%';
[/sql]
Результат:
Код:
--------------
mysql4\bin\mysql  Ver 13.5 Distrib 4.1.0-alpha, for Win95/Win98 (i32)

Connection id:		12
Current database:	test
Current user:		ODBC@localhos
SSL:			Not in use
Server version:		4.1.0-alpha-max-nt
Protocol version:	10
Connection:		localhost via TCP/IP
Client characterset:	cp1251_general_ci
Server characterset:	cp1251_general_ci
TCP port:		3306
Uptime:			41 min 8 sec

Threads: 1  Questions: 135  Slow queries: 0  Opens: 22
Flush tables: 1  Open tables: 1  Queries per second avg: 0.055
--------------

--------------
SELECT * FROM a WHERE a LIKE '%фываПролдж%'
--------------

a
фываПролдж
--------------
SELECT * FROM a WHERE a LIKE '%фываПролд%'
--------------

a
фываПролдж
--------------
SELECT * FROM a WHERE a LIKE '%фываП%'
--------------

a
фываПролдж
--------------
SELECT * FROM a WHERE a LIKE '%фЫва%'
--------------

a
фЫва
фЫвапролдж
--------------
SELECT * FROM a WHERE a LIKE '%фЫв%'
--------------

a
фыва
Фыва
фЫва
фыВа
фывА
ФЫВА
фывапролдж
Фывапролдж
фЫвапролдж
фыВапролдж
фывАпролдж
фываПролдж
фывапРолдж
фывапрОлдж
фывапроЛдж
фывапролДж
фывапролдЖ
ФЫВАПРОЛДЖ
--------------
SELECT * FROM a WHERE a LIKE 'фываПролдж%'
--------------

a
фывапролдж
Фывапролдж
фЫвапролдж
фыВапролдж
фывАпролдж
фываПролдж
фывапРолдж
фывапрОлдж
фывапроЛдж
фывапролДж
фывапролдЖ
ФЫВАПРОЛДЖ
--------------
SELECT * FROM a WHERE a LIKE 'фЫва%'
--------------

a
фыва
Фыва
фЫва
фыВа
фывА
ФЫВА
фывапролдж
Фывапролдж
фЫвапролдж
фыВапролдж
фывАпролдж
фываПролдж
фывапРолдж
фывапрОлдж
фывапроЛдж
фывапролДж
фывапролдЖ
ФЫВАПРОЛДЖ
--------------
SELECT * FROM a WHERE a REGEXP '.*фЫва.*'
--------------

a
фыва
Фыва
фЫва
фыВа
фывА
ФЫВА
фывапролдж
Фывапролдж
фЫвапролдж
фыВапролдж
фывАпролдж
фываПролдж
фывапРолдж
фывапрОлдж
фывапроЛдж
фывапролДж
фывапролдЖ
ФЫВАПРОЛДЖ
--------------
SELECT * FROM a WHERE a LIKE '%qwerTyuiop%'
--------------

a
qwerTyuiop
QWERTYUIOP
--------------
SELECT * FROM a WHERE a LIKE '%qWer%'
--------------

a
qWer
QWER
qwerTyuiop
QWERTYUIOP
PS. При тестировании оказалось, что уронить винду (ХРень) муськой очень просто.
1) Достаточно запустить ее из консоли:
mysqld-nt --console --skip-grant-tables
2) Выполнить несколько раз эти запросы
3) В консоли, где запущена муська надавить кучу раз Ctrl+C... Муська останавливается, но при этом и винда падает...
 

Апельсин

Оранжевое создание
у меня запросы выдают те же самые результаты.
Винда не падает :) (2000-я)
 

Profic

just Profic (PHP5 BetaTeam)
у меня запросы выдают те же самые результаты
Писать баг-репорт?
И где там на муськином сайте его писать :) там черт голову сломит :)
Падает, не падает - фиг с ней, главное, что запросы не воркают :(
 

Lord Clyde

Новичок
Спасибо за топик, а то я начал думать, что это у меня с руками глюки, а не с MySQL...
 
Сверху