Преобразование чисел в шестнадцатеричные в SQL Server
Быстрый ответ
Для преобразования целого числа в шестнадцатеричное представление, используйте функцию CONVERT(VARCHAR(8), ВашеЧисло, 2)
. Для обратной операции — преобразования шестнадцатеричного числа в целое, воспользуйтесь CONVERT(INT, ВашеШестнадцатеричноеЧисло)
.
-- Преобразование целого числа в шестнадцатеричное (вместо 255 укажите нужное число)
SELECT CONVERT(VARCHAR(8), 255, 2) AS HexValue;
-- Преобразование шестнадцатеричного числа в целое (вместо 'FF' укажите наиболее подходящее значение)
SELECT CONVERT(INT, 0xFF) AS IntValue;
Эти методы применимы для серверов SQL Server 2008 и более новых версий. В других системах могут использоваться альтернативные способы преобразования.
Особенности функции CONVERT в SQL
Работа с шестнадцатеричными числами в строках, начинающихся на '0x'
Для преобразования шестнадцатеричного числа в строке, начинающейся с '0x', используйте стиль 1 при работе с функцией CONVERT
. SQL Server будет учитывать этот формат.
-- Преобразование шестнадцатеричного числа в строке, начинающейся на '0x', в целое
SELECT CONVERT(INT, CONVERT(VARBINARY, '0x1FFFFF', 1)) AS IntValue;
Преобразование шестнадцатеричных строк без префикса '0x'
При отсутствии префикса 0x
выберите стиль 2. SQL Server предполагает наличие парных последовательностей цифр.
-- Преобразование шестнадцатеричного числа без префикса '0x' в целое
SELECT CONVERT(INT, CONVERT(VARBINARY, '1FFFFF', 2)) AS IntValue;
Использование функции FORMAT для форматирования в шестнадцатеричное представление
С появлением SQL Server 2012 функция FORMAT
стала доступна для удобного форматирования чисел.
-- Преобразование целого числа в шестнадцатеричное представление через FORMAT
SELECT FORMAT(255, 'X') AS HexValue; -- Вернёт в результате 'FF'
Визуализация
Преобразование целых чисел в шестнадцатеричное представление и обратно можно представить как путешествие:
Проспект Целых Чисел (🚦 42 🚗 ➡️ 🌟 0x2A)
Шоссе Шестнадцатеричных Чисел (🌟 0x2A 🚗 ⬅️ 🚦 42)
🚦: Светофор = момент преобразования
🚗: Машина = процесс переноса данных
🌟: Звезда = шестнадцатеричное представление числа в его системе счисления
Таким образом, вы можете видеть, как легко перейти от десятичной системы к шестнадцатеричной и обратно.
Продвинутые методы и предостережения
Использование функции fn_varbintohexstr
В некоторых более старых системах есть функция master.dbo.fn_varbintohexstr
, однако помните, что она может стать устаревшей.
-- Преобразование целого числа в шестнадцатеричное представление с помощью устаревшей функции
SELECT master.dbo.fn_varbintohexstr(255) AS HexValue;
Различия между SQL Server и Excel
Сравнивая с Excel, стоит понимать: в SQL Server требуется иной, более гибкий подход.
Важность правильного использования типов данных
Тип данных VARBINARY
идеально подходит для шестнадцатеричного представления, а VARCHAR
или INT
— для переведенных обратно значений. Важно соблюдать согласованность типов данных в вашем контексте.
Берегите четность
Убедитесь, что ваши шестнадцатеричные строки содержат четное число символов. В противном случае может возникнуть ошибка из-за ограничений SQL Server.
Полезные материалы
- PostgreSQL: Documentation: 9.8. Функции форматирования типов данных — официальная документация о форматировании числовых типов данных в PostgreSQL.
- MySQL :: MySQL 8.0 Справочное руководство :: 12.8 Функции и операторы для работы со строками — справочник по функции HEX в MySQL.
- TO_CHAR (datetime) — часть документации Oracle, посвященная функциям преобразования данных.
- HEX – База знаний MariaDB — статья в базе знаний MariaDB о функции HEX.
- FORMAT (Transact-SQL) – SQL Server | Microsoft Learn — руководство по использованию функции FORMAT в SQL Server.