在 Oracle 中将小数转换为十六进制

Convert fractional number to Hexadecimal in Oracle

我在数据库中有一个 table 具有小数值- 价值 14.65 45 7458.34 34.69 4.7 34

我想把这个小数值转换成十六进制。

但是to_hex函数只转换十进制值(14)而不是(14.65)。

也尝试过 to_char- SELECT TO_CHAR(15.33, 'X') 来自双重; --->输出:F

我不想对值进行上限或下限并打印十六进制数。 我要 15.33 --->F.547AE147

将值拆分为整数和小数部分,并分别对它们使用 TO_CHAR

WITH table_name (value) AS (
  SELECT  15.33 FROM DUAL UNION ALL
  SELECT -15.33 FROM DUAL
)
SELECT value,
       CASE WHEN value < 0 THEN '-' END
       || TO_CHAR(TRUNC(ABS(value)), 'fmXXXXXXXXXX')
       || '.'
       || TO_CHAR(
            ABS(MOD(value, 1))*TO_NUMBER('FFFFFFFF', 'XXXXXXXX'),
            'fm0XXXXXXX'
          ) AS hex
FROM   table_name;

输出:

VALUE HEX
15.33 F.547AE147
-15.33 -F.547AE147

db<>fiddle here