Conversiones binario, octal y hexadecimal a decimal en SQL Server

admin

July 20, 2009

SQL SERVER

1 Comment

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

No Comment

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: [sql] SELECT AUTOINC_NEXT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ‘MiTabla’ AND COLUMN_NAME = ‘MiColumna’ [/sql] Y como sustituto a RESEED tenemos […]

Read More

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

admin

March 28, 2016

PHP, SQL SERVER

No Comment

Para conectarse a Sql Server desde linux utilizamos este comando para instalar el driver: [bash] $ sudo yum install -y php-mssql [/bash] Por ejemplo, para php5.6: [bash] $ sudo yum install -y php56w-mssql [/bash] Esta instrucción instala freetds, una colección de librerias para conectarnos con Sql Server desde linux. Con esta librería no solo podemos […]

Read More

1 Comment

  • Alex on March 14, 2011

    SQL Server es programa muy interesante. Una vez teni la problema parecida a fortunamente teni exito arreglar ella por la utiliza proxima que tiene muchas posibilidades – reparar base de datos sql 2000.

Leave a Reply

Your email address will not be published. Required fields are marked *