Pergunta

Eu tenho um procedimento armazenado que as necessidades de converter números hexadecimais ao seu decimal equivalente. Eu li a documentação para a função UNHEX (), mas ele está retornando um valor binário. O que eu estou querendo fazer é algo como isto:

CREATE PROCEDURE foo( hex_val VARCHAR(10) )
BEGIN
    DECLARE dec_val INTEGER;

    SET dec_val = UNHEX( hex_val );

    -- Do something with the decimal value
    select dec_val;
END

O que eu estou ausente? Como posso converter o UNHEX () 'valor d para um inteiro não assinado?

Foi útil?

Solução

Você pode usar a função CONV() para converter entre bases.

SET dec_val = CONV(hex_val, 16, 10);

Outras dicas

conv(hex_val, 16, 10)

irá converter um número de base 16 para base 10. A função UNHEX faz algo completamente diferente, ele converte pares de dígitos hexadecimais de caracteres.

fundido (conv (hex_val, 16, 10) como um número inteiro sem sinal) que deve ser resolver o problema ....

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top