utorok, 08 júl 2014 15:56 Written by 2735 times
Rate this item
(2 votes)

SQL - konverzia decimálneho čísla na hexadecimálne a naopak

Konverzie medzi číselnými sústavami by sa mohli zdať komplikované, ale databázový systém ORACLE disponuje veľmi silnými funkciami "TO_CHAR" a "TO_NUMBER",
ktoré nám v oblasti konverzií čísel veľmi uľahčujú život.

Príklad, ako prekonvertovať číslo z desiatkovej (decimálnej) sústavy na šestnástkovú (hexadecimálnu) sústavu:

SQL> SELECT TO_CHAR(255, 'XXXX') HEX FROM DUAL;

Výstup:
>HEX
>---
>FF

Príklad, ako prekonvertovať číslo šestnástkovej (hexadecimálnej) sústavy na desiatkovú (decimálnu) sústavu:

SQL> SELECT TO_NUMBER('AA', 'XX') DEC FROM DUAL;

Výstup:
>DEC
>---
>170

Hotovo.

Vysvetlenie:
Na celé toto sme použili zabudované oracle SQL funkcie TO_CHAR a TO_NUMBER. Podrobný popis týchto funkcií nebudem uvádzať, nakoľko sú podrobne rozpísané na oracle stránkach.
Pre nás budú nateraz postačujúce tieto základné informácie.
 
Konverzia čísla z desiatkovej (decimálnej) sústavy na šestnástkovú (hexadecimálnu) sústavu: TO_CHAR(255, 'XXXX' )
Funkciu TO_CHAR som použil na konverziu čísla desiatkovej sústavy na šestnástkovú z dôvodu, že šestnástková sústava obsahuje aj znaky A,B,C,D,E,F.
Výstup z tejto funkcie bude reťazec znakov. Prvý parameter je konvertované decimálne číslo 255 a druhý maska. Pomocou masky sa dajú kovertovať a upravovať tvary rôznych dátových typov na reťazec.
Napríklad rôzne tvary reálnych čísel, dátumov, časových pásiem, atď.

Konverzia čísla z šestnástkovej (hexadecimálnej) sústavy na desiatkovú (decimálnu) sústavu: TO_NUMBER('AA', 'XX')
Pre tento prípad som použil opačnú funkciu TO_NUMBER. Touto funkciou konvertujeme reťazce na čísla. Konvertujeme hexadecimálne číslo 'AA', ktoré je reprezentované reťazcom na celé číslo.
Prvý parameter je konvertované hexadecimálne číslo a druhý maska.

S pozdravom

Last modified on utorok, 08 júl 2014 16:34
Alojz Benďák

Autor je administrátor webu a venuje sa programovaniu takmer 23 rokov.

  • prvý kontakt s počítačmi na strednej škole - PMD 1,2,3, PP06, Atari, Sinclair (programovanie v jazyku: strojový kód, basic a pascal):  2 roky
  • na VŠ - jazyky Turbo pascal a Turbo C: 1rok
  • programovanie databázového ekonomického širokoškálneho software v Delphi a C++ Borland (databázy Paradox): 8 rokov v Codex s.r.o. Nitra
  • programovanie webových aplikácií na databázach MySQL a MS SQL server: 1 roky na živnosť (firmy: Hermes Nitra, Schindler v Bratislave)
  • pracoval ako DBA v Homecredit Brno a vo VÚB Bratislava ako vyvojár + optimalizácie v SQL a PL/SQL na Oracle 11g (firma Accenture)
  • programoval programy pre súkromné firmy pre HW na skenovanie povrchov nádrží pre skladovanie tekutých palív (pristroj Leica)
  • momentálne pracuje ako DBA pod Oracle 11g a ako vyvojár vnútropodnikových databázových aplikacií v PHP, SQL, C++, C# a interface v PL/SQL: 11 rokov
  • ďalej programuje s HTML, CSS, Ajax, Javascript, VBA, MS visual C++ a C# malé podporné aplikácie
  • certifikát SQL expert for Oracle 11g   
  • spolupracuje a aktívne učí pre počítačové firmy: Lapis, IVIT v Nitre