F.32. mchar — дополнительные типы данных для совместимости с Microsoft SQL Server #

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

F.32.1. Обзор #

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

F.32.4. Авторы #

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