F.24. mchar

F.24.1. Обзор
F.24.2. Дополнительные типы
F.24.3. Функциональность типов MCHAR и MVARCHAR
F.24.4. Авторы

The mchar module provides additional data types for compatibility with Microsoft SQL Server (MS SQL).

F.24.1. Обзор

Этот модуль был разработан для улучшения поддержки системы 1С:Предприятие, самой популярной в России CRM и ERP-платформы.

It implements types MCHAR and MVARCHAR, which are bug-to-bug compatible with MS SQL CHAR and VARCHAR respectively. Additionally, these types use libicu for comparison and case conversion, so their behavior is identical across different operating systems.

В PostgreSQL также есть расширение citext, предоставляющие типы, подобные MCHAR. Но это расширение не воспроизводит поведение MS-SQL в отношении пробельных символов в конце строки.

Отличия от стандартных типов PostgreSQL CHAR и VARCHAR:

  • Сравнение без учёта регистра

  • Обработка пробельных символов в конце строки

  • Эти типы всегда хранятся как двухбайтовые строки Unicode вне зависимости от кодировки базы данных.

F.24.2. Дополнительные типы

  • mchar — analog of the MS SQL char type

  • mvarchar — analog of the MS SQL varchar type

F.24.3. Функциональность типов MCHAR и MVARCHAR

  • Определяется функция length(str)

  • Определяется функция substr(str, pos[, length])

  • Определяется оператор ||, применяемый для конкатенации любых аргументов mchar и mvarchar

  • Определяется набор операторов: <, <= =, >= и > для сравнения символов без учёта регистра (LibICU)

  • Определяется набор операторов: &<, &<=, &=, &>= и &> для сравнения с учётом регистра (LibICU)

  • Неявное приведение между типами mchar и mvarchar

  • Поддержка B-деревьев и хеш-индексов

  • Поддержка оператора LIKE [ESCAPE]

  • Поддержка оператора SIMILAR TO [ESCAPE]

  • Поддержка оператора ~ (регулярные выражения POSIX)

  • Поддержка индексов для оператора LIKE

F.24.4. Авторы

      Олег Бартунов 
      Фёдор Сигаев