Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

3 начина за конвертиране на HEX в INT в SQL Server (T-SQL)

Ето 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.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Групи за разговори на Sql Server Service Broker

  2. Преместване на бази данни на SQL Server в облака

  3. SQL заявка за намиране на N-та най-висока заплата от таблица със заплати

  4. Кога и как да използвате клаузата на SQL PARTITION BY

  5. Как да експортирате данни на SQL Server от таблица в CSV файл