ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

Преобразование чисел в шестнадцатеричные в SQL Server

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для преобразования целого числа в шестнадцатеричное представление, используйте функцию CONVERT(VARCHAR(8), ВашеЧисло, 2). Для обратной операции — преобразования шестнадцатеричного числа в целое, воспользуйтесь CONVERT(INT, ВашеШестнадцатеричноеЧисло).

SQL
Скопировать код
-- Преобразование целого числа в шестнадцатеричное (вместо 255 укажите нужное число)
SELECT CONVERT(VARCHAR(8), 255, 2) AS HexValue;

-- Преобразование шестнадцатеричного числа в целое (вместо 'FF' укажите наиболее подходящее значение)
SELECT CONVERT(INT, 0xFF) AS IntValue;

Эти методы применимы для серверов SQL Server 2008 и более новых версий. В других системах могут использоваться альтернативные способы преобразования.

Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Особенности функции CONVERT в SQL

Работа с шестнадцатеричными числами в строках, начинающихся на '0x'

Для преобразования шестнадцатеричного числа в строке, начинающейся с '0x', используйте стиль 1 при работе с функцией CONVERT. SQL Server будет учитывать этот формат.

SQL
Скопировать код
-- Преобразование шестнадцатеричного числа в строке, начинающейся на '0x', в целое
SELECT CONVERT(INT, CONVERT(VARBINARY, '0x1FFFFF', 1)) AS IntValue;

Преобразование шестнадцатеричных строк без префикса '0x'

При отсутствии префикса 0x выберите стиль 2. SQL Server предполагает наличие парных последовательностей цифр.

SQL
Скопировать код
-- Преобразование шестнадцатеричного числа без префикса '0x' в целое
SELECT CONVERT(INT, CONVERT(VARBINARY, '1FFFFF', 2)) AS IntValue;

Использование функции FORMAT для форматирования в шестнадцатеричное представление

С появлением SQL Server 2012 функция FORMAT стала доступна для удобного форматирования чисел.

SQL
Скопировать код
-- Преобразование целого числа в шестнадцатеричное представление через FORMAT
SELECT FORMAT(255, 'X') AS HexValue; -- Вернёт в результате 'FF'

Визуализация

Преобразование целых чисел в шестнадцатеричное представление и обратно можно представить как путешествие:

Markdown
Скопировать код
Проспект Целых Чисел (🚦 42 🚗 ➡️ 🌟 0x2A)
Markdown
Скопировать код
Шоссе Шестнадцатеричных Чисел (🌟 0x2A 🚗 ⬅️ 🚦 42)
Markdown
Скопировать код
🚦: Светофор = момент преобразования
🚗: Машина = процесс переноса данных
🌟: Звезда = шестнадцатеричное представление числа в его системе счисления

Таким образом, вы можете видеть, как легко перейти от десятичной системы к шестнадцатеричной и обратно.

Продвинутые методы и предостережения

Использование функции fn_varbintohexstr

В некоторых более старых системах есть функция master.dbo.fn_varbintohexstr, однако помните, что она может стать устаревшей.

SQL
Скопировать код
-- Преобразование целого числа в шестнадцатеричное представление с помощью устаревшей функции
SELECT master.dbo.fn_varbintohexstr(255) AS HexValue;

Различия между SQL Server и Excel

Сравнивая с Excel, стоит понимать: в SQL Server требуется иной, более гибкий подход.

Важность правильного использования типов данных

Тип данных VARBINARY идеально подходит для шестнадцатеричного представления, а VARCHAR или INT — для переведенных обратно значений. Важно соблюдать согласованность типов данных в вашем контексте.

Берегите четность

Убедитесь, что ваши шестнадцатеричные строки содержат четное число символов. В противном случае может возникнуть ошибка из-за ограничений SQL Server.

Полезные материалы

  1. PostgreSQL: Documentation: 9.8. Функции форматирования типов данных — официальная документация о форматировании числовых типов данных в PostgreSQL.
  2. MySQL :: MySQL 8.0 Справочное руководство :: 12.8 Функции и операторы для работы со строками — справочник по функции HEX в MySQL.
  3. TO_CHAR (datetime) — часть документации Oracle, посвященная функциям преобразования данных.
  4. HEX – База знаний MariaDB — статья в базе знаний MariaDB о функции HEX.
  5. FORMAT (Transact-SQL) – SQL Server | Microsoft Learn — руководство по использованию функции FORMAT в SQL Server.