Обсуждение: Port Bug Report: Incorrect search using 'select .... like ...' statement.
Port Bug Report: Incorrect search using 'select .... like ...' statement.
От
Unprivileged user
Дата:
============================================================================ POSTGRESQL BUG REPORT TEMPLATE ============================================================================ Your name : Misha Yakin Your email address : misha@libr-115c.ksu.ru Category : runtime: back-end: SQL Severity : serious Summary: Incorrect search using 'select .... like ...' statement. System Configuration -------------------- Operating System : Linux 2.2.3 ELF(Red Hat 5.0) PostgreSQL version : 6.4.2 Compiler used : gcc 2.7.2.3 Hardware: --------- Pentium 166, 32M RAM. uname -a: Linux libr-115c.ksu.ru 2.2.3 #1 ��� ��� 12 17:09:04 MSK 1999 i586 unknown Versions of other tools: ------------------------ GNU Make version 3.76.1, flex version 2.5.4, gcc version 2.7.2.3, glibc 2.0.7 -------------------------------------------------------------------------- Problem Description: -------------------- Sometimes expresion like 'select a from b where a like 'abc%';' gives null result, while 'select a from b where a like 'abcd%';' gives right result (several records). In some case first expression gives some result but it doesn't contains result of the second one... But expresion '... like 'ab%';' gives result containing results of the first an the second. -------------------------------------------------------------------------- Test Case: ---------- All fields I tried contain russian characters (there was some fields with english characters but I don't find such error with them) example: vkuzmina=> select tit from cvcat where lower(tit) like '���������%'; tit ----------------- ��������� � ����� (1 row) vkuzmina=> select tit from cvcat where lower(tit) like '��������%'; tit --- (0 rows) vkuzmina=> select tit from cvcat where lower(tit) like '�������%'; tit ----------------- ��������� � ����� (1 row) vkuzmina=> select tit from cvcat where tit like '�������%'; tit ----------------- ��������� � ����� (1 row) vkuzmina=> select tit from cvcat where tit like '��������%'; tit --- (0 rows) vkuzmina=> select tit from cvcat where tit like '���������%'; tit ----------------- ��������� � ����� (1 row) -------------------------------------------------------------------------- Solution: --------- --------------------------------------------------------------------------
Re: [PORTS] Port Bug Report: Incorrect search using 'select .... like ...' statement.
От
Bruce Momjian
Дата:
> Sometimes expresion like 'select a from b where a like 'abc%';' gives > null result, while 'select a from b where a like 'abcd%';' gives > right result (several records). In some case first expression > gives some result but it doesn't contains result of the second > one... But expresion '... like 'ab%';' gives result containing > results of the first an the second. > > -------------------------------------------------------------------------- > > Test Case: > ---------- > All fields I tried contain russian characters (there was some > fields with english characters but I don't find such error with them) > > > example: > > vkuzmina=> select tit from cvcat where lower(tit) like '���������%'; > tit > ----------------- > ��������� � ����� > (1 row) > > vkuzmina=> select tit from cvcat where lower(tit) like '��������%'; > tit > --- > (0 rows) > > vkuzmina=> select tit from cvcat where lower(tit) like '�������%'; > tit > ----------------- > ��������� � ����� > (1 row) > > vkuzmina=> select tit from cvcat where tit like '�������%'; > tit > ----------------- > ��������� � ����� > (1 row) > > vkuzmina=> select tit from cvcat where tit like '��������%'; > tit > --- > (0 rows) > > vkuzmina=> select tit from cvcat where tit like '���������%'; > tit > ----------------- > ��������� � ����� > (1 row) > We have some problems with international characters sets and index usage. Someone else will probably give a better answer. -- Bruce Momjian | http://www.op.net/~candle maillist@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026