"select ... where field like lower('%text%')" fails

Поиск
Список
Период
Сортировка
От Sean Kelly
Тема "select ... where field like lower('%text%')" fails
Дата
Msg-id Pine.LNX.4.21.0103061130060.8795-100000@random.ncl.ac.uk
обсуждение исходный текст
Список pgsql-bugs
Hello,

    I was trying to send the following bug report from the web page
but it kept timing out.  I hope this is the only time it arrives on the
list...

    I am trying to search a varchar(x) field with a query like:

        select ... where field like lower('%someText%')

    In one field, if the value someText is at the very start then the
search fails.  In another field, if the value someText is at the very
start then the search succeeds.

    Here are some statements (the ones returning 0 rows should be
returning something):


isp=> \d user_tbl
                 Table "user_tbl"
 Attribute |    Type     |        Modifier
-----------+-------------+-------------------------
 username  | varchar(10) | not null
 company   | varchar(80) | not null
 email     | varchar(80) |
 password  | varchar(20) | not null
 active    | boolean     | not null default 'TRUE'
 created   | timestamp   | not null
Index: user_tbl_pkey


isp=> SELECT username,company,active,created
isp-> from user_tbl where username;
 username |       company       | active |        created
----------+---------------------+--------+------------------------
 sean     | Sean's Test Company | t      | 2001-01-14 14:01:58+00
(1 row)


isp=> SELECT username,company,active,created
isp-> from user_tbl where username like lower('%SEaN%');
 username |       company       | active |        created
----------+---------------------+--------+------------------------
 sean     | Sean's Test Company | t      | 2001-01-14 14:01:58+00
(1 row)


isp=> SELECT username,company,active,created
isp-> from user_tbl where company like lower('%SEaN%');
 username | company | active | created
----------+---------+--------+---------
(0 rows)


isp=> SELECT username,company,active,created
isp-> from user_tbl where company like lower('SEaN%');
 username | company | active | created
----------+---------+--------+---------
(0 rows)


isp=> SELECT username,company,active,created
isp-> from user_tbl where company like lower('%EaN%');
 username |       company       | active |        created
----------+---------------------+--------+------------------------
 sean     | Sean's Test Company | t      | 2001-01-14 14:01:58+00
(1 row)



    Any advice?

    Thanks,

--
Sean

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Nicolas GIMMILLARO
Дата:
Сообщение: seq scan on a table whereas an index exist
Следующее
От: Jarom Hagen
Дата:
Сообщение: COBOL