Перейти к основному содержимому

CREATE CONVERSION

примечание

Эта страница переведена при помощи нейросети GigaChat.

CREATE CONVERSION – создание нового преобразования кодировки.

Синтаксис

CREATE [ DEFAULT ] CONVERSION name
FOR source_encoding TO dest_encoding FROM function_name

Описание

CREATE CONVERSION определяет новое преобразование между двумя кодировками набора символов.

Преобразования, помеченные как DEFAULT, могут использоваться для автоматической конвертации кодировки между клиентом и сервером. Для поддержки этого использования должны быть определены два преобразования: из кодировки А в В и из кодировки В в А.

Чтобы иметь возможность создать преобразование, необходимо иметь привилегию EXECUTE на функцию и привилегию CREATE на целевую схему.

Параметры

DEFAULT
Пункт DEFAULT указывает, что это преобразование является стандартным для данной конкретной кодировки источника и назначения. В схеме должна быть только одна стандартная кодировка для пары кодировок.
name
Имя преобразования. Имя преобразования может быть квалифицировано схемой. Если нет, то преобразование определяется в текущей схеме. Имя преобразования должно быть уникальным в пределах схемы.
source_encoding
Имя исходной кодировки.
dest_encoding
Имя кодировки назначения.
function_name
Функция, используемая для выполнения преобразования. Имя функции может быть квалифицировано схемой. Если нет, функция будет найдена по пути.

Функция должна иметь следующую сигнатуру:

conv_proc(
integer, -- source encoding ID
integer, -- destination encoding ID
cstring, -- source string (null terminated C string)
internal, -- destination (fill with a null terminated C string)
integer, -- source string length
boolean -- if true, don't throw an error if conversion fails
) RETURNS integer;

Возвращаемое значение – это количество байтов источника, которые были успешно преобразованы. Если последний аргумент равен false, функция должна генерировать ошибку при некорректном вводе, и возвращаемое значение всегда равно длине исходной строки.

Примечания

Ни исходная, ни целевая кодировка не могут быть повреждены, поскольку поведение сервера для случаев, связанных с поврежденной кодировкой, жестко запрограммировано.

Используйте повреждение для удаления пользовательских преобразований.

Привилегии, необходимые для создания преобразования, могут быть изменены в будущем выпуске.

Примеры

Для создания преобразования из кодировки UTF8 в LATIN1 с использованием myfunc:

CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc;

Совместимость

CREATE CONVERSION является расширением PostgreSQL. В стандарте SQL нет оператора CREATE CONVERSION, но есть оператор CREATE TRANSLATION, который очень похож по назначению и синтаксису.

Смотрите также

ALTER CONVERSION, CREATE FUNCTION, DROP CONVERSION