Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

3 sposoby konwersji HEX na INT w SQL Server (T-SQL)

Oto 3 sposoby konwersji wartości szesnastkowej na liczbę całkowitą w programie SQL Server.

Najpierw są dwie funkcje T-SQL, które umożliwiają konwersję wartości szesnastkowej na liczbę całkowitą. Oprócz tych funkcji istnieje również koncepcja niejawnej konwersji, która może również dać ten sam wynik.

Przykład 1 – Funkcja CONVERT()

Pierwszą funkcją, której się przyjrzymy, jest CONVERT() funkcjonować. Pozwala to na konwersję między typami danych w SQL Server.

Oto przykład użycia tej funkcji do konwersji wartości szesnastkowej na liczbę całkowitą:

SELECT CONVERT(INT, 0xfcab) Result;

Wynik:

+----------+
| Result   |
|----------|
| 64683    |
+----------+

W tym przypadku konwertujemy wartość szesnastkową fcab (z przedrostkiem 0x ) na liczbę całkowitą.

Przykład 2 – Funkcja CAST()

Możemy alternatywnie użyć CAST() funkcja, aby zrobić to samo, co w poprzednim przykładzie:

SELECT CAST(0xfcab AS INT) Result;

Wynik:

+----------+
| Result   |
|----------|
| 64683    |
+----------+

Zwróć uwagę, że CAST() i CONVERT() użyj nieco innej składni. W przypadku CAST() wartość do rzutowania jest pierwsza, podczas gdy jest na odwrót z CONVERT() .

Przykład 3 – Konwersja niejawna

Oto przykład wykonania niejawnej konwersji, po prostu mnożąc wartość szesnastkową przez 1:

SELECT 0xfcab * 1 Result;

Wynik:

+----------+
| Result   |
|----------|
| 64683    |
+----------+

Przykład 4 – Formatowanie wyniku

Możemy również użyć FORMAT() funkcja formatowania wyniku końcowego. W takim przypadku nadal korzystamy z funkcji konwersji, aby wykonać rzeczywistą konwersję. Tyle, że używamy również FORMAT() funkcja formatowania wyniku jako liczby (za pomocą N specyfikator formatu).

SELECT FORMAT(CAST(0xfcab AS INT), 'N') Result;

Wynik:

+-----------+
| Result    |
|-----------|
| 64,683.00 |
+-----------+

Zwróć uwagę, że ta funkcja w rzeczywistości zwraca wynik w postaci ciągu.

Zauważ również, że FORMAT() funkcja akceptuje tylko typy danych numerycznych oraz daty i godziny. Dlatego nie możemy przekazać wartości szesnastkowej bezpośrednio do funkcji. Jeśli spróbujemy to zrobić, oto co się dzieje:

SELECT FORMAT(0xfcab, 'N') Result;

Wynik:

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. Zapytanie SQL, aby uzyskać zagregowany wynik w separatorach przecinków wraz z grupowaniem po kolumnie w SQL Server

  2. Magazyn zapytań SQL Server

  3. Instrukcja aktualizacji dynamicznej ze zmiennymi nazwami kolumn

  4. Zmień tryb podejrzany bazy danych SQL na tryb normalny za pomocą zapytania

  5. Jak utworzyć tabelę z ograniczeniem klucza obcego w SQL Server — samouczek SQL Server / TSQL, część 66