Как создать базу данных CASE INSENSITIVE, используя латинские символы? - PullRequest
0 голосов
/ 08 ноября 2019

Я использую Firebird 2.5, и я искал создание базы данных, которая поддерживает регистр символов. В этот момент я успешно использовал кодировку UTF8 вместе с UNICODE_CI_AI Collate, теперь проблема заключается в том, что эта конфигурация не поддерживает латиноамериканские акцентуации, такие как: «Ã Ó Ç À» и т. Д. Для латинского акцентуации я использовал ISO8859_1, но этоне работает с регистронезависимым.

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

РЕДАКТИРОВАТЬ: Это моя конфигурация базы данных / таблицы:

enter image description here

И это то, что я получаю, когда пытаюсь вставить слово «PÃO», например:

enter image description here

1 Ответ

1 голос
/ 08 ноября 2019

Поскольку вы используете FB 2.5 и в соответствии с документацией у вас есть три сопоставления для Unicode:

  • UNICODE
  • UNICODE_CI
  • UNICODE_CI_AI

Является ли средний, который вы искали?

Если нет, вы можете использовать команду CREATE COLLATION для изменения существующих так, как вам нужно. Это также задокументировано по ссылке выше или в отдельном более раннем документе .

ОБНОВЛЕНИЕ

Хорошо, поэтому я взял свой старый тестовый ящик с Firebird 2.1.7 иего база данных с ODS 11.1 И я нахожу его с UNICODE и UNICODE_CI, но не UNICODE_CI_AI Я не мог создать сопоставление AI в FB 2.1 - несмотря на документацию, он постоянно жаловался на атрибуты "accent" или атрибуты сопоставления.

Я открыл тот же файл БД, используя встроенную в IBE Firebird 2.5.1 Embedded

  • C: \ Program Files \ IBExpert \ IBEUDB \ fbembed.dll

Затем я запускаюследующее:

CREATE COLLATION UNICODE_CI_AI
FOR UTF8 FROM UNICODE_CI
   accent INSENSITIVE;

recreate table so_58758871 (
 f1 varchar(20) character set UTF8 collate UNICODE,
 f2 varchar(20) character set UTF8 collate UNICODE_CI,
 f3 varchar(20) character set UTF8 collate UNICODE_CI_AI
);


insert into so_58758871 values (
 :sensitive, :semisens, :insensitive
);

И это ... просто работает, в Firebird 2.5.1 (старая и плохая версия, но поставляется в IBE, поэтому я не стал беспокоиться), по крайней мере.

storing characters fetching characters

...