F.31. mchar

Модуль mchar предоставляет дополнительные типы данных для совместимости с Microsoft SQL Server (MS SQL).

F.31.1. Обзор

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

Он содержит реализацию типов MCHAR и MVARCHAR, которые с точностью до ошибок совместимы с типами MS SQL CHAR и VARCHAR, соответственно. Эти типы используют libicu для сравнения строк и преобразования регистра, так что они действуют одинаково в разных операционных системах.

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

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

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

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

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

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

  • mchar — аналог типа char в MS SQL

  • mvarchar — аналог типа varchar в MS SQL

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

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

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

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

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

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

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

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

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

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

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

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

F.31.4. Авторы

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