sql >> Database teknologi >  >> RDS >> Sqlserver

3 måder at konvertere HEX til INT i SQL Server (T-SQL)

Her er 3 måder at konvertere en hexadecimal værdi til et heltal i SQL Server.

Først er to T-SQL-funktioner, der giver dig mulighed for at konvertere en hex-værdi til et heltal. Ud over disse funktioner er der også konceptet implicit konvertering, som også kan give det samme resultat.

Eksempel 1 – KONVERT()-funktionen

Den første funktion, vi vil se på, er CONVERT() fungere. Dette giver dig mulighed for at konvertere mellem datatyper i SQL Server.

Her er et eksempel på brug af denne funktion til at konvertere en hexadecimal værdi til et heltal:

SELECT CONVERT(INT, 0xfcab) Result;

Resultat:

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

I dette tilfælde konverterer vi den hexadecimale værdi fcab (med præfiks med 0x ) til et heltal.

Eksempel 2 – CAST()-funktionen

Vi kan alternativt bruge CAST() funktion for at gøre det samme som det forrige eksempel:

SELECT CAST(0xfcab AS INT) Result;

Resultat:

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

Bemærk, at CAST() og CONVERT() bruge lidt forskellige syntakser. I tilfælde af CAST() værdien, der skal castes, kommer først, hvorimod det er omvendt med CONVERT() .

Eksempel 3 – Implicit konvertering

Her er et eksempel på at udføre en implicit konvertering, blot ved at gange hex-værdien med 1:

SELECT 0xfcab * 1 Result;

Resultat:

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

Eksempel 4 – Formatering af resultatet

Vi kan også bruge FORMAT() funktion til at formatere slutresultatet. I dette tilfælde bruger vi stadig en konverteringsfunktion til at udføre den faktiske konvertering. Det er bare, at vi også bruger FORMAT() funktion til at formatere resultatet som et tal (ved at bruge N formatspecifikation).

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

Resultat:

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

Bemærk, at denne funktion faktisk returnerer resultatet som en streng.

Bemærk også, at FORMAT() funktionen accepterer kun numeriske og dato- og klokkeslætsdatatyper. Derfor kan vi ikke sende en hexadecimal værdi direkte til funktionen. Hvis vi prøver at gøre det, sker der her:

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

Resultat:

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

  1. CASE WHEN-erklæring for ORDER BY-klausul

  2. ExecuteReader kræver en åben og tilgængelig forbindelse. Forbindelsens aktuelle tilstand er Forbinder

  3. TNS-12505:TNS:listener kender i øjeblikket ikke til SID givet i forbindelsesbeskrivelsen

  4. Brug af data beskyttet med en Azure Key Vault fra Linux