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