Skip to content
Advertisement

PostgreSQL – How to format an int as an hexa

What’s a short/simplest way of formatting an int to an hexa, with leading zeroes? For example I need to format:

| int   | hexa |
|-------|------|
| 0     | 0000 |
| 1     | 0001 |
| 3861  | 0f15 |
| 14908 | 3a3c |

My query needs many of these conversions I would appreciate a short piece of code instead of a verbose one. Just need to deal with positive numbers.

Advertisement

Answer

I’m not sure it’s the shortest way but at least I found one:

LPAD(TO_HEX(N), 4, '0')

as in:

WITH DATA AS (
  SELECT 0 AS N
  UNION ALL SELECT 1
  UNION ALL SELECT 3861
  UNION ALL SELECT 14908
)
SELECT LPAD(TO_HEX(N), 4, '0') FROM DATA
User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement