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 SQLmvarchar
— аналог типа 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. Авторы
Олег Бартунов <oleg@sai.msu.ru>
Фёдор Сигаев <teodor@sigaev.ru>