Обсуждение: Bug in LIKE operator processing

Поиск
Список
Период
Сортировка

Bug in LIKE operator processing

От
Żak, Sławomir
Дата:
I've found that statement:
SELECT * FROM os WHERE 'FreeBSD 4.7-RC'     LIKE string_id; (one of string_id's is 'FreeBSD 4.7%')

doesn't work. No error is reported. It does work in Oracle,
so I think it's a standard SQL query.

Table is defined as:

host=> \d os                                   Table "os" Column   |         Type          |
Modifiers                   
-----------+-----------------------+-----------------------------------------------id        | integer               |
notnull default nextval('"os_id_seq"'::text)name      | character varying(32) | major     | integer               |
minor    | integer               | subrev    | character(16)         | string_id | character(32)         |  
Unique keys: os_id_key

PostgreSQL version is 7.3.1

Is it non-implemented by design, or maybe I've overlooked something?

Thanks, /S


Re: Bug in LIKE operator processing

От
Stephan Szabo
Дата:
On Mon, 27 Jan 2003, [iso-8859-2] =AFak, S=B3awomir wrote:

> I've found that statement:
>
>     SELECT * FROM os WHERE 'FreeBSD 4.7-RC'
>         LIKE string_id; (one of string_id's is 'FreeBSD 4.7%')

>  string_id | character(32)         |

character(32) has space padding which is probably getting in your way.
I'd suggest moving to varchar(32).

Re: Bug in LIKE operator processing

От
Tom Lane
Дата:
Żak, Sławomir <SZak@era.pl> writes:
> I've found that statement:
>     SELECT * FROM os WHERE 'FreeBSD 4.7-RC'
>         LIKE string_id; (one of string_id's is 'FreeBSD 4.7%')
> doesn't work. No error is reported. It does work in Oracle,

It'd probably work in Postgres too, if you'd used varchar(n) rather than
char(n) for string_id.  As is, the trailing spaces in string_id are
considered significant.
        regards, tom lane