Ето 3 начина за преобразуване на шестнадесетична стойност в цяло число в SQL Server.
Първо са две T-SQL функции, които ви позволяват да конвертирате шестнадесетична стойност в цяло число. В допълнение към тези функции има и концепцията за имплицитно преобразуване, което също може да доведе до същия резултат.
Пример 1 – Функцията CONVERT()
Първата функция, която ще разгледаме, е CONVERT()
функция. Това ви позволява да конвертирате между типове данни в SQL Server.
Ето пример за използване на тази функция за преобразуване на шестнадесетична стойност в цяло число:
SELECT CONVERT(INT, 0xfcab) Result;
Резултат:
+----------+ | Result | |----------| | 64683 | +----------+
В този случай преобразуваме шестнадесетичната стойност fcab
(с префикс с 0x
) до цяло число.
Пример 2 – Функцията CAST()
Като алтернатива можем да използваме CAST()
функция, за да направи същото като предишния пример:
SELECT CAST(0xfcab AS INT) Result;
Резултат:
+----------+ | Result | |----------| | 64683 | +----------+
Обърнете внимание, че CAST()
и CONVERT()
използвайте малко по-различен синтаксис. В случай на CAST()
стойността, която трябва да бъде прехвърлена, е на първо място, докато с CONVERT()
е обратното .
Пример 3 – Неявно преобразуване
Ето пример за извършване на имплицитно преобразуване, просто чрез умножаване на шестнадесетичната стойност по 1:
SELECT 0xfcab * 1 Result;
Резултат:
+----------+ | Result | |----------| | 64683 | +----------+
Пример 4 – Форматиране на резултата
Можем също да използваме FORMAT()
функция за форматиране на крайния резултат. В този случай ние все още използваме функция за преобразуване, за да извършим действителното преобразуване. Просто ние също използваме FORMAT()
функция за форматиране на резултата като число (с помощта на N
спецификатор на формат).
SELECT FORMAT(CAST(0xfcab AS INT), 'N') Result;
Резултат:
+-----------+ | Result | |-----------| | 64,683.00 | +-----------+
Имайте предвид, че тази функция всъщност връща резултата като низ.
Също така имайте предвид, че FORMAT()
функцията приема само числови и типове данни за дата и час. Следователно не можем да предадем шестнадесетична стойност директно на функцията. Ако се опитаме да направим това, ето какво се случва:
SELECT FORMAT(0xfcab, 'N') Result;
Резултат:
Argument data type varbinary is invalid for argument 1 of format function.