ta odpowiedź, co wygląda na to samo pytanie:serwer MS SQL - konwersja HEX ciąg do liczby całkowitej
Convert integer to hex and hex to integer
..does nie działać dla mnie.
Nie mogę przejść do ciągu HEX do liczby całkowitej za pomocą serwera MS SQL 2005 CAST lub CONVERT. Czy brakuje mi czegoś trywialnego? Mam obszerne wyszukiwanie, a najlepsze, jakie mogę znaleźć, to długie funkcje użytkownika, które przechodzą od wartości ciągu szesnastkowego do czegoś, co wygląda jak liczba dziesiętna. Z pewnością istnieje prosty sposób na zrobienie tego bezpośrednio w zapytaniu za pomocą wbudowanych funkcji, zamiast pisania funkcji użytkownika?
Dzięki
Edycja zawierać przykłady:
wybierz CONVERT (int, 0x89)
działa zgodnie z oczekiwaniami, ale
wybierz CONVERT (INT " 0x '+ substring (msg, 66, 2)) od sometable
dostaje mnie:
"Konwersja nie powiodła się podczas konwertowania wartości varchar '0x89' do danych typu int."
dodatkowy wyraźny CAST:
wybierz CONVERT (INT, CAST ('0x89' AS VARBINARY))
Wykonuje, ale zwraca 813185081.
zastępując 'INT', "Dziesiętny", itp. Dla "Varbinary" powoduje błąd. Ogólnie rzecz biorąc, łańcuchy, które wyglądają na liczbowe, są interpretowane jako liczbowe, jeśli jest to wymagane, ale nie w tym przypadku, i nie wydaje się, że łańcuch CAST rozpoznaje HEX. Chciałbym myśleć, że jest coś prostego i oczywistego, a ja po prostu tęskniłem.
Microsoft SQL Server Management Studio Express 9.00.3042.00
Microsoft SQL Server 2005 - 9.00.3080.00 (Intel X86) 06 wrzesień 2009 01:43:32 Copyright (c) 1988-2005 Microsoft Corporation Express Edition z zaawansowanych usług w systemie Windows NT 5.1 (Build 2600: Service pack 3)
Podsumowując: chcę wziąć ciąg szesnastkowy, który jest wartością w tabeli, a następnie wyświetlić je jako część wyniku kwerendy dziesiętna liczba całkowita, wykorzystująca tylko funkcje zdefiniowane przez system, a nie UDF.
Czy pojawia się określony błąd lub nieoczekiwane wyniki? Przykłady byłyby pomocne. – LittleBobbyTables
Co oznacza "nie działa źle"? CONVERT() jest wbudowaną funkcją i jest bardzo mało prawdopodobne, że nie działa. Więc proszę, opublikuj swoją wersję i edycję MSSQL, a także wyniki uruchamiania dwóch zapytań SELECT z odpowiedzi, do której jesteś podłączony: SELECT CONVERT (VARBINARY (8), 16777215) i SELECT CONVERT (INT, 0xFFFFFF) – Pondlife
Widziałeś to? Zobacz komentarze ... http://blog.sqlauthority.com/2010/02/01/sql-server-question-how-to-convert-hex-to-decimal/ –