Conversiones decimal a binario, octal y hexadecimal en SQL Server

En esta ocasión veremos una función simple para convertir numeros decimales a otras bases como son, binario, octal y hexadecimal.

Codigo T-SQL

CREATE FUNCTION dbo.udf_decimal_a_base(@N bigint, @Base int)

RETURNS varchar(200)

AS

BEGIN

— Declaramos las variables a utilizar

DECLARE @Result varchar(200),

@NumChars varchar(50)

— Inicializamos las variables

SET @NumChars = ‘0123456789ABCDEF’

SET @Result =

— Validamos la base a convertir

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

BEGIN

— Ejecutamos el ciclo

WHILE ( @N > 0 )

BEGIN

— Realizamos la conversion

SET @Result = SUBSTRING(@NumChars,(@N % @Base) + 1,1) + @Result

— Disminuimos N, dividiendola entre la base

SET @N = FLOOR(@N / @Base)

END

END

— Retornamos el resultado

RETURN @Result

END

GO

El uso de esta funcion quedaría:

SELECT dbo.udf_decimal_a_base(4564,2)

SELECT dbo.udf_decimal_a_base(4564,8)

SELECT dbo.udf_decimal_a_base(4564,16)

Codigo T-SQL

Dandonos como resultados:

Resultados T-SQL

———————————————————————————————
1000111010100

(1 filas afectadas)

———————————————————————————————
10724

(1 filas afectadas)

———————————————————————————————
11D4

(1 filas afectadas)

Esta función puede incluirse dentro de Stored Procedures y tener múltiples aplicaciones, espero que les sirva. Hasta 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

Leave a Reply

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