在表的一列中有一个示例负数。如-1000
期望输出- FC18
我想要的输出FC18在oracle SQL,这是Signed十六进制2的补充
- - - - - -引用https://www.rapidtables.com/convert/number/decimal - hex.html?x= - 1000
您可以使用:
SELECT value,
TO_CHAR(
CASE
WHEN value >= POWER(2,15) OR value < -POWER(2, 15)
THEN NULL
WHEN value < 0
THEN POWER(2,16)
ELSE 0
END + value,
'FM000X'
) AS int_to_2c_hex
FROM table_name;
对于样本数据:
CREATE TABLE table_name (value) AS
SELECT +1000 AS value FROM DUAL UNION ALL
SELECT -1000 FROM DUAL UNION ALL
SELECT -1 FROM DUAL UNION ALL
SELECT +1 FROM DUAL UNION ALL
SELECT +32767 FROM DUAL UNION ALL
SELECT -32768 FROM DUAL UNION ALL
SELECT +32768 FROM DUAL UNION ALL
SELECT -32769 FROM DUAL;
输出:
<表类>tbody><<tr> 价值 INT_TO_2C_HEX 1000 03 e8 1 -1000 FC18 1 飞行符 0001 32767 7 fff -32768 8000 32768 空 表类> -32769 空