Conversiones decimal a binario, octal y hexadecimal en SQL Server

admin

July 18, 2009

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

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