The mchar module provides additional data types
for compatibility with Microsoft SQL Server (MS SQL).
Этот модуль был разработан для улучшения поддержки системы 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 вне зависимости от кодировки базы данных.
mchar — analog of the MS SQL char type
mvarchar — analog of the MS SQL varchar type
Определяется функция 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>