#oracle #plsql #hex #to-char
#Oracle #plsql #шестнадцатеричный #в-char
Вопрос:
Я использую приведенную ниже инструкцию select для преобразования положительного числа в шестнадцатеричное
SQL>select to_char('2122699925', 'XXXXXXXXXXXXXXXX') from testable
Output : 7E85D495
Но TO_CHAR для отрицательного числа выдает мне вывод в виде #################
SQL>select to_char('-2122699925', 'XXXXXXXXXXXXXXXX') from testable
Output : #################
Требуемый результат должен быть 817A2B6B. Есть мысли?
Ответ №1:
В документации говорится (элементы числового формата в таблице 2-13), здесь
Возвращает шестнадцатеричное значение из указанного количества цифр. Если указанное число не является целым числом, то Oracle Database округляет его до целого числа.
Ограничения:
Этот элемент принимает только положительные значения или 0. Отрицательные значения возвращают ошибку.
…….
Однако я смог найти приведенную ниже ссылку, которая ведет диалог для отрицательных чисел. Я не собирался копировать это, но предоставляю вам ссылку, если это вам каким-либо образом поможет,
Комментарии:
1. Здравствуйте, Суджитмоханти, сообщение было полезным и решило мой вопрос, но что означает число 4294967296 в приведенном ниже заявлении? <предварительно> 1 ВЫБЕРИТЕ значение val, 2 To_Char( 3 Расшифруйте ( 4 знака (val), -1, 4294967296 — Abs (val), 5 Abs (val) 6 ), ‘XXXXXXXX’) Из 7 * (ВЫБЕРИТЕ -1000175007 val ИЗ dual) </ pre>
2. Это не что иное, как МОЩНОСТЬ (16,8). Как я понял из сообщения, зависит от числа, которое мы хотим преобразовать в шестнадцатеричное, т.е.
16
представляет шестнадцатеричное и8
зависит. от того, в какой шестнадцатеричный мы хотим преобразовать 2-значный шестнадцатеричный или 3-значный шестнадцатеричный или 8-значный шестнадцатеричный и так далее.. У меня есть некоторый пробел в понимании альтернативного подхода.