sql >> Databasteknik >  >> RDS >> Sqlserver

3 sätt att konvertera HEX till INT i SQL Server (T-SQL)

Här är 3 sätt att konvertera ett hexadecimalt värde till ett heltal i SQL Server.

Först ut är två T-SQL-funktioner som låter dig konvertera ett hexadecimalt värde till ett heltal. Utöver dessa funktioner finns det också konceptet implicit konvertering, som också kan ge samma resultat.

Exempel 1 – Funktionen CONVERT()

Den första funktionen vi ska titta på är CONVERT() fungera. Detta gör att du kan konvertera mellan datatyper i SQL Server.

Här är ett exempel på hur du använder den här funktionen för att konvertera ett hexadecimalt värde till ett heltal:

SELECT CONVERT(INT, 0xfcab) Result;

Resultat:

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

I det här fallet konverterar vi det hexadecimala värdet fcab (med prefixet 0x ) till ett heltal.

Exempel 2 – CAST()-funktionen

Vi kan alternativt använda CAST() funktion för att göra samma sak som föregående exempel:

SELECT CAST(0xfcab AS INT) Result;

Resultat:

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

Observera att CAST() och CONVERT() använder lite olika syntaxer. I fallet med CAST() värdet som ska kastas kommer först, medan det är tvärtom med CONVERT() .

Exempel 3 – Implicit konvertering

Här är ett exempel på att utföra en implicit konvertering, helt enkelt genom att multiplicera hex-värdet med 1:

SELECT 0xfcab * 1 Result;

Resultat:

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

Exempel 4 – Formatera resultatet

Vi kan också använda FORMAT() funktion för att formatera slutresultatet. I det här fallet använder vi fortfarande en konverteringsfunktion för att utföra den faktiska konverteringen. Det är bara det att vi också använder FORMAT() funktion för att formatera resultatet som ett tal (genom att använda N formatspecifikation).

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

Resultat:

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

Observera att den här funktionen faktiskt returnerar resultatet som en sträng.

Observera också att FORMAT() Funktionen accepterar endast numeriska och datum- och tidsdatatyper. Därför kan vi inte skicka ett hexadecimalt värde direkt till funktionen. Om vi ​​försöker göra det händer det här:

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

Resultat:

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

  1. Anslutning nekad (PGError) (postgresql och rails)

  2. Returnera kolumnprivilegier från en länkad server i SQL Server (T-SQL-exempel)

  3. Varför skulle Oracle.ManagedDataAccess inte fungera när Oracle.DataAccess gör det?

  4. Återställer åtkomst till SQL Server-instansen utan att starta om