# How to Convert Decimal to Hexadecimal in Oracle SQL

## Introduction

Are you struggling to convert decimal numbers to hexadecimal in Oracle SQL? Don’t worry; you are not alone. Convert decimal to hexadecimal in Oracle SQL is a common requirement in database programming. In this article, we will guide you on how to convert decimal numbers to hexadecimal in Oracle SQL.

- Introduction
- What are Decimal and Hexadecimal Number Systems?
- Conversion of Decimal to Hexadecimal in Oracle SQL
- Conversion of Large Decimal Numbers to Hexadecimal
- Conversion of Negative Decimal Numbers to Hexadecimal
- Eliminate Leading Whitespaces
- Convert the decimal to hexadecimal with Uppercase and Lowercase
- Conclusion
- FAQs

## What are Decimal and Hexadecimal Number Systems?

Before we delve into the conversion process, let’s briefly discuss the decimal and hexadecimal number systems. The decimal number system is the most commonly used number system, consisting of ten digits (0 to 9). The place value of each digit is ten times greater than the digit to its right.

On the other hand, the hexadecimal number system is a base-16 number system consisting of 16 digits (0 to 9 and A to F). The place value of each digit is 16 times greater than the digit to its right.

## Conversion of Decimal to Hexadecimal in Oracle SQL

To convert decimal to hexadecimal in Oracle SQL, we can use the built-in function **TO_CHAR()**. The **TO_CHAR()** function converts a number or date to a string.

### Syntax

The syntax of the **TO_CHAR()** function for converting decimal to hexadecimal is as follows:

`TO_CHAR(decimal_number, 'X') `

Here, **decimal_number** is the decimal number you want to convert to hexadecimal.

### Example (1)

```
SELECT TO_CHAR(10, 'X') AS HEX_VALUE
FROM DUAL;
```

### Output:

HEX_VALUE |
---|

A |

In the above example, we have converted the decimal number 10 to its equivalent hexadecimal value, ‘A’, but notice that oracle is added a leading white space to the result due to the space for the leading minus sign.

## Conversion of Large Decimal Numbers to Hexadecimal

What if the decimal number you want to convert to hexadecimal is too large? The **TO_CHAR()** function may not give the correct result in such cases.

We must use the **HEXTORAW()** and **TO_CHAR()** functions to handle large decimal numbers. The **HEXTORAW()** function converts a hexadecimal string to its equivalent raw data.

### Syntax

The syntax of the **HEXTORAW()** function is as follows:

`HEXTORAW(hexadecimal_string)`

### Example (2)

```
SELECT RAWTOHEX (HEXTORAW (TO_CHAR (456789, 'fmXXXXXXXX'))) AS HEX_VALUE
FROM DUAL;
```

### Output:

HEX_VALUE |
---|

06F855 |

In the above example, we have converted the decimal number **456789** to its equivalent hexadecimal value, ‘**06F855**‘.

## Conversion of Negative Decimal Numbers to Hexadecimal

What if the decimal number you want to convert to hexadecimal is negative? In such cases, we need to add **4294967296 (2\^32)** to the decimal number and then convert it to hexadecimal using the **TO_CHAR()** function.

### Example (3)

```
SELECT TO_CHAR(-10 + 4294967296, 'XXXXXXXX') AS HEX_VALUE
FROM DUAL;
```

### Output:

HEX_VALUE |
---|

FFFFFFF6 |

In the above example, we have converted the negative decimal number -10 to its equivalent hexadecimal value ‘FFFFFFF6’.

## Eliminate Leading Whitespaces

By default, Oracle adds white space to the result of the decimal number conversion to Hex, and this is due to the space for the leading minus sign, and to remove this whitespace, we can use fm when converting the number to Hex.

```
SELECT TO_CHAR(155, 'fmXX') HEX_WITHOUT_SPACE
FROM DUAL;
```

### Output:

HEX_WITHOUT_SPACE |

9B |

In the above example, we converted the number 155 to Hex and added the “fm” prefix to eliminate whitespaces in the output.

## Convert the decimal to hexadecimal with Uppercase and Lowercase

If we need to print the result in uppercase and lowercase, and in this case, we need to pass the argument XX as upper to print the hexadecimal number in uppercase or “xx” to print it in lowercase as in the example below.

### Example (6)

```
SELECT TO_CHAR (219, 'fmXX') HEX_UPPERCASE, TO_CHAR (219, 'fmxx') HEX_LOWERCASE
FROM DUAL;
```

### Output:

HEX_UPPERCASE | HEX_LOWERCASE |
---|---|

DB | db |

In the above example, we converted the number219 to Hex one time in uppercase and another in lowercase.

## Conclusion

In this article, we have learned how to convert decimal numbers to hexadecimal in Oracle SQL. We have discussed the **TO_CHAR()** function and how to handle large and negative decimal numbers. With this knowledge, you can easily convert decimal numbers to hexadecimal in Oracle SQL.

## FAQs

- What is a hexadecimal number system? A hexadecimal number system is a base-16 number system consisting of 16 digits (0 to 9 and A to F).
- What is the decimal number system? The decimal number system is a base-10 number system consisting of 10 digits (0 to 9).
- What is the purpose of converting decimal to hexadecimal in Oracle SQL? Converting decimal to hexadecimal is often required in database programming for various applications, such as cryptography and networking.