2008-12-08 24 views
10

Onaltılık sayıları onluk eşdeğerine dönüştürmesi gereken bir saklı yordamım var. UNHEX() işlevinin belgelerini okudum, ancak ikili bir değer döndürüyor. Yapmak istediğim şey şunun gibi:MySQL'de onaltılık sayılarla çalışma

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 

Neyi eksik? UNHEX() 'd değerini işaretsiz bir tam sayıya nasıl dönüştürebilirim? 10. UNHEX fonksiyonu temel için tabanın 16 bir dizi temel dönüştürmek

cevap

22

Tabanlar arasında dönüştürmek için CONV() işlevini kullanabilirsiniz. sorunu çözmek olmalıdır

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

Bunun, ondalık bir * dize * olarak döndüreceğini unutmayın. Bir ondalık sayıyı tamsayı olarak almak isterseniz, aşağıdakileri kullanın: cast (conv (hex_val, 16, 10) imzasız olarak) – kien

7
conv(hex_val, 16, 10) 

karaktere kadar onaltılı çiftleri dönüştürür, tamamen farklı bir şey yapar.

+0

teşekkürler. – eli

7

dökme (işaretsiz tamsayı olarak dönüşüm (hex_val, 16, 10)) .... "unhex" ne kadar takas için