Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

3 Möglichkeiten zum Konvertieren von HEX in INT in SQL Server (T-SQL)

Hier sind 3 Möglichkeiten, einen Hexadezimalwert in SQL Server in eine Ganzzahl umzuwandeln.

An erster Stelle stehen zwei T-SQL-Funktionen, mit denen Sie einen Hex-Wert in eine ganze Zahl umwandeln können. Zusätzlich zu diesen Funktionen gibt es auch das Konzept der impliziten Konvertierung, die ebenfalls zum gleichen Ergebnis führen kann.

Beispiel 1 – Die CONVERT()-Funktion

Die erste Funktion, die wir uns ansehen werden, ist CONVERT() Funktion. Dadurch können Sie zwischen Datentypen in SQL Server konvertieren.

Hier ist ein Beispiel für die Verwendung dieser Funktion, um einen Hexadezimalwert in eine Ganzzahl umzuwandeln:

SELECT CONVERT(INT, 0xfcab) Result;

Ergebnis:

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

In diesem Fall wandeln wir den Hexadezimalwert fcab um (mit vorangestelltem 0x ) in eine ganze Zahl.

Beispiel 2 – Die CAST()-Funktion

Wir können alternativ den CAST() verwenden Funktion dasselbe wie im vorherigen Beispiel:

SELECT CAST(0xfcab AS INT) Result;

Ergebnis:

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

Beachten Sie, dass CAST() und CONVERT() verwenden Sie leicht unterschiedliche Syntaxen. Im Fall von CAST() der zu wandelnde Wert steht an erster Stelle, während es bei CONVERT() umgekehrt ist .

Beispiel 3 – Implizite Konvertierung

Hier ist ein Beispiel für eine implizite Konvertierung, indem einfach der Hexadezimalwert mit 1 multipliziert wird:

SELECT 0xfcab * 1 Result;

Ergebnis:

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

Beispiel 4 – Formatieren des Ergebnisses

Wir können auch das FORMAT() verwenden Funktion zum Formatieren des Endergebnisses. In diesem Fall verwenden wir immer noch eine Konvertierungsfunktion, um die eigentliche Konvertierung durchzuführen. Nur verwenden wir auch das FORMAT() Funktion, um das Ergebnis als Zahl zu formatieren (mithilfe der N Formatbezeichner).

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

Ergebnis:

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

Beachten Sie, dass diese Funktion das Ergebnis tatsächlich als Zeichenfolge zurückgibt.

Beachten Sie auch, dass FORMAT() -Funktion akzeptiert nur numerische und Datums- und Zeitdatentypen. Daher können wir der Funktion keinen Hexadezimalwert direkt übergeben. Wenn wir das versuchen, passiert Folgendes:

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

Ergebnis:

Argument data type varbinary is invalid for argument 1 of format function.