Модуль mchar предоставляет дополнительные типы данных для совместимости с Microsoft SQL Server (MSSQL).
Этот модуль был разработан для улучшения поддержки системы 1С:Предприятие, самой популярной в России CRM и ERP-платформы.
Он содержит реализацию типов MCHAR и MVARCHAR, которые с точностью до ошибок совместимы с типами MSSQL CHAR и VARCHAR, соответственно. Эти типы используют libicu для сравнения строк и преобразования регистра, так что они действуют одинаково в разных операционных системах.
В Postgres Pro также есть расширение citext, предоставляющие типы, подобные MCHAR. Но это расширение не воспроизводит поведение MS-SQL в отношении пробельных символов в конце строки.
Отличия от стандартных типов Postgres Pro CHAR и VARCHAR:
Сравнение без учёта регистра
Обработка пробельных символов в конце строки
Эти типы всегда хранятся как двухбайтовые строки Unicode вне зависимости от кодировки базы данных.
mchar — аналог типа char в MSSQL
mvarchar — аналог типа varchar в MSSQL
Определяется функция length(str)
Определяется функция substr(str, pos[, length])
Определяется оператор ||, применяемый для конкатенации любых аргументов mchar и mvarchar
Определяется набор операторов: <, <= =, >= и > для сравнения символов без учёта регистра (LibICU)
Определяется набор операторов: &<, &<=, &=, &>= и &> для сравнения с учётом регистра (LibICU)
Неявное приведение между типами mchar и mvarchar
Поддержка B-деревьев и хеш-индексов
Поддержка оператора LIKE [ESCAPE]
Поддержка оператора SIMILAR TO [ESCAPE]
Поддержка оператора ~ (регулярные выражения POSIX)
Поддержка индексов для оператора LIKE
Олег Бартунов <oleg@sai.msu.ru>
Фёдор Сигаев <teodor@sigaev.ru>