Как создать индекс в PostgreSQL только на нижнем регистре?
Как мне настроить индекс, основанный только на нижнем регистре?
Несмотря на то, что фактическое поле содержит буквы верхнего и нижнего регистра.
Кроме того, могу ли я запустить запрос и вернуть только значение индекса нижнего регистра?
Ответ 1
Вы можете создать индекс и преобразовать поле в верхний или нижний регистр. Затем, когда вы выполняете свои запросы, вы можете сделать то же самое преобразование, и оно поступит правильно.
Итак:
CREATE UNIQUE INDEX lower_case_username ON users ((lower(username)));
Затем запрос для одного и того же:
SELECT username FROM users WHERE lower(username) = 'bob';
Ответ 2
В соответствии с документами вы можете сделать это:
CREATE UNIQUE INDEX lower_title_idx ON films ((lower(title)));
Ответ 3
CREATE UNIQUE INDEX my_index_name ON my_table (LOWER(my_field));