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.