postgresql 12.3 преобразовать существующую базу данных для использования сортировки без учета регистра? - PullRequest
0 голосов
/ 06 августа 2020

postgresql 12,3 в контейнере Liux (Alpine 3.10)

Я хотел бы преобразовать существующую БД для использования сортировки без учета регистра. Является ли это возможным? Я имею в виду, без отбрасывания базы данных и воссоздания с нуля.

Также: если это возможно сделать на уровне таблицы или поля, это тоже хорошо, но опять же, без отбрасывания и воссоздания таблицы.

1 Ответ

1 голос
/ 09 августа 2020

Вы можете изменить на nondeterministi c сопоставление, но поскольку это кажется недоступным, вы можете установить citext extension , затем измените свои столбцы, чтобы ввести citext.

create extension if not exists citext. 
alter table *table_name* alter column *column_name* set data type citext'; 

Полный пример приведен ниже. Я попытался создать скрипку. Однако citext не существовало, и у меня не было прав на установку расширения.

create extension if not exists citext; 

create table test_ci( col1 text, col2 citext);
insert into test_ci(col1,col2)
   ( values ('ABC','XyZ'), ('ABc','lll'), ('Abc','LLL'), ('abc','xYz'))
   
select *
  from test_ci 
 where col1 = 'ABC';

select *
  from test_ci 
 where col2 = 'XYZ';

alter table test_ci alter col1 set data type citext;
select *
  from test_ci 
 where col1 = 'ABC';
  
...