Регистр в уникальном индексе и в SELECT DISTINCT

Stas Tristan
Дата: 30.07.2004 05:21:00
PostgreSQL Win 7.5 DEV
Locale = Russian_russia.1251
Encoding = WIN
При установке уникального индекса наблюдается следующее поведение:
сервер считает значения "Иванов" и "иванов" разными. Тоже самое и при выполения запроса через DISTINCT - выдает оба значения, хотя если сделать фильтр ilike '%иванов%', то выдает оба значения - т.е. правильно.
Как справиться с такой проблемой?
Sad Spirit
Дата: 30.07.2004 10:18:04
Stas Tristan
сервер считает значения "Иванов" и "иванов" разными.
...
Как справиться с такой проблемой?


А это проблема?.. Они на самом деле что, одинаковые?..

Можно делать что-то типа
SELECT DISTINCT lower(...) ...
и
CREATE UNIQUE INDEX foobar_idx ON FOO (lower(bar));
(нащёт синтаксиса могут быть проблемы, но смысл такой).
Эридан
Дата: 30.07.2004 12:26:46
Ну во-первых это действительно не проблема :) Просто ты наверное привык к Windows, где регистр действительно не имеет значения. Функция ilike() отностится к нестандартным расширениям постгреса и игнорирует регистр. Так что да поможет тебе UPPER()/LOWER().
Stas Tristan
Дата: 30.07.2004 17:18:43
@Sad Spirit: Спаcибо, решение с индексом помогло. А если не будет повторов, то и DISTINCT делать не надо :)