(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, символы сохранились
Обсуждают сегодня