Conversiones binario, octal y hexadecimal a decimal en SQL Server

admin

July 20, 2009

SQL SERVER

Como continuación del anterior artículo, esta vez veremos como convertir de cualquier base numérica (hexadecimal, octal y binaria) a base decimal en SQL Server. A continuación presentamos el código:

Codigo T-SQL

CREATE FUNCTION dbo.udf_base_a_decimal(@S varchar(250), @Base int)

RETURNS bigint

AS

BEGIN

DECLARE @Result bigint, @i int, @P int,

@NumChars varchar(50)

— Declaramos las variables

SET @NumChars = ‘0123456789ABCDEF’

SET @Result = 1

SET @S = UPPER(@S)

SET @i = 1

— Validamos las bases

IF ( (@Base = 2) OR (@Base = 8) OR (@Base = 16) OR (@Base = 10) )

BEGIN

SET @Result = 0

— Iniciamos el ciclo

WHILE ( @i <= LEN(@S) )

BEGIN

SET @P = CHARINDEX(SUBSTRING(@S,@i,1),@NumChars)

IF ( (@P = 0) OR (@P > @Base) )

BEGIN

SET @Result = 1

BREAK

END

SET @Result = @Result + (@P 1) * (POWER(@Base,(LEN(@S) @i)))

SET @i = @i + 1

END

END

RETURN @Result

END

GO

La forma de usar esta función es:

Codigo T-SQL

SELECT dbo.udf_base_a_decimal(‘1000111010100’,2)

SELECT dbo.udf_base_a_decimal(‘10724’, 8)

SELECT dbo.udf_base_a_decimal(’11D4′, 16)

Los resultados obtenidos

Resultados T-SQL

——————–
4564

(1 row(s) affected)

——————–
4564

(1 row(s) affected)

——————–
4564

(1 row(s) affected)

Es todo por ahora, nos leeremos la próxima.

Related Posts

CURRENT_IDENT y RESEED en Sql Server Compact Edition

admin

April 21, 2018

SQL SERVER

Sql Server Compact Edition no cuenta con funciones como RESEED o CURRENT_IDENT, así que tenemos que hechar mano de consultas a la información de esquema y de alteración de tablas. Como sustituto a IDENT_CURRENT tenemos: Y como sustituto a RESEED tenemos que alterar la tabla: No es tan complejo ciertamente, y útil para lidiar con […]

Read More

Conexión a Sql Server con Php 5.6 linux CentOS 6

admin

March 28, 2016

PHP, SQL SERVER

Para conectarse a Sql Server desde linux utilizamos este comando para instalar el driver: Por ejemplo, para php5.6: Esta instrucción instala freetds, una colección de librerias para conectarnos con Sql Server desde linux. Con esta librería no solo podemos conectarnos desde Php, sino desde la linea de comandos, con el programa tsql. Después de instalar, […]

Read More