(username VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL, role VARCHAR(255) NOT NULL)
Пытаюсь при создании поля сделать конвертацию из одного формата в другой:
CREATE OR REPLACE FUNCTION test_ins(js json)
RETURNS void
LANGUAGE plpgsql
AS $function$
DECLARE
BEGIN
INSERT users(
username,
role,
password
) (
convert(js->>'username', 'UTF8', 'LATIN1'),
js->>'role',
js->>'password'
);
END;
$function$
Но происходит ошибка: function convert(text, unknown, unknown) is not defined. В чём может быть проблема?
У меня postgres версии 14 стоит, но не работает convert функция.
Благодарю
Функция convert только для bytea есть Посмотри на convert_from / convert_to https://www.postgresql.org/docs/15/functions-binarystring.html
а есть способы изменить кодировку для строки? Благодарю
т.е я могу к примеру сделать такое: convert((js->>'username')::bytea, 'UTF8', 'LATIN1'), и поменять тип поля в таблице на bytea?
В виде bytea можно играться только show server_encoding; -- UTF8 show client_encoding; -- UTF8 select convert_to('huvudvärke', 'UTF8'); -- bytea с битыми символами, huvudvärke select convert_to('huvudvärke', 'LATIN1'); -- bytea с правильными символами select convert(convert_to('huvudvärke', 'UTF8'), 'UTF8', 'LATIN1'); -- текст -> UTF8-bytea -> LATIN1-bytea, символы сохранились
Обсуждают сегодня