Mar 012010
В PostgreSQL есть функция to_hex, которая конвертирует int в hex. А вот обратной – нет. Если у вас простой SQL-запрос, то можно выполнить
SELECT x'10'
А вот если нужно сконвертировать какое-то поле из 16-тиричной системы счисления, то я нагуглил такую функцию. Думаю, кому-то поможет:
CREATE FUNCTION from_hex(t text) RETURNS INTEGER AS $$ DECLARE r BIGINT; BEGIN EXECUTE('SELECT CAST(x'''||in_hex||''' AS BIGINT)') INTO r; RETURN r; END; $$ LANGUAGE plpgsql IMMUTABLE STRICT;
UPD: спасибо oktogen
А теперь порнографию с циклом замените на
DECLARE
r BIGINT;
BEGIN
EXECUTE('SELECT CAST(x'''||in_hex||''' AS BIGINT)') INTO r;
RETURN r;
END;
спасибо