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.