sql >> Database >  >> RDS >> Sqlserver

3 manieren om HEX naar INT te converteren in SQL Server (T-SQL)

Hier zijn 3 manieren om een ​​hexadecimale waarde om te zetten in een geheel getal in SQL Server.

Ten eerste zijn er twee T-SQL-functies waarmee u een hexadecimale waarde naar een geheel getal kunt converteren. Naast deze functies is er ook het concept van impliciete conversie, die ook hetzelfde resultaat kan opleveren.

Voorbeeld 1 – De CONVERT() Functie

De eerste functie waar we naar zullen kijken is de CONVERT() functie. Hiermee kunt u tussen gegevenstypen in SQL Server converteren.

Hier is een voorbeeld van het gebruik van deze functie om een ​​hexadecimale waarde om te zetten in een geheel getal:

SELECT CONVERT(INT, 0xfcab) Result;

Resultaat:

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

In dit geval converteren we de hexadecimale waarde fcab (voorafgegaan door 0x ) naar een geheel getal.

Voorbeeld 2 – De CAST()-functie

We kunnen ook de CAST() . gebruiken functie om hetzelfde te doen als in het vorige voorbeeld:

SELECT CAST(0xfcab AS INT) Result;

Resultaat:

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

Merk op dat CAST() en CONVERT() gebruik iets andere syntaxis. In het geval van CAST() de te casten waarde komt eerst, terwijl het andersom is met CONVERT() .

Voorbeeld 3 – Impliciete conversie

Hier is een voorbeeld van het uitvoeren van een impliciete conversie, simpelweg door de hexadecimale waarde te vermenigvuldigen met 1:

SELECT 0xfcab * 1 Result;

Resultaat:

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

Voorbeeld 4 – Het resultaat opmaken

We kunnen ook de FORMAT() . gebruiken functie om het eindresultaat op te maken. In dit geval gebruiken we nog steeds een conversiefunctie om de daadwerkelijke conversie uit te voeren. Alleen gebruiken we ook de FORMAT() functie om het resultaat als een getal op te maken (met behulp van de N formaatspecificatie).

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

Resultaat:

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

Merk op dat deze functie het resultaat in feite als een string teruggeeft.

Merk ook op dat de FORMAT() functie accepteert alleen numerieke en datum- en tijdgegevenstypen. Daarom kunnen we een hexadecimale waarde niet rechtstreeks aan de functie doorgeven. Als we dat proberen, gebeurt het volgende:

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

Resultaat:

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

  1. Mysql-toestemmingsfouten met 'gegevens laden'

  2. Getallen opmaken in wetenschappelijke notatie in Oracle

  3. Update met parameter met behulp van de permanente bibliotheek van de kamer

  4. Dagelijkse PostgreSQL-taken automatiseren met Jenkins