Binärzahl in Dezimalzahl umwandeln

By Frank Kalis

Posted on Aug 18, 2004 von in SQL Server

Normalerweise würde man solche Fragestellungen. welcher Dezimalzahl nun 1011001 entspricht, damit beantworten, in dem man auf den Client verweist. Was aber, wenn man einfach wissen will, wie so etwas in T-SQL aussehen könnte? Ob man es dann später einsetzt, ist ja eine andere Sache:

DECLARE @input VARCHAR(255)
DECLARE @i INT
DECLARE @noi CHAR
DECLARE @result INT
SELECT @input = '1011001', @i=1, @result=0
WHILE (@i<=LEN(@input))
BEGIN
SELECT @noi=SUBSTRING(@input,@i,1)
SELECT @result=@result+ (ASCII(@noi)-48)*POWER(2,LEN(@input)-@i)
SELECT @i=@i+1
END
SELECT @result

-----------
89

(1 row(s) affected)

oder in der UDF-Variante:

CREATE FUNCTION dbo.convbin2dec(@input VARCHAR(255) ) 
RETURNS INT
AS
BEGIN
DECLARE @i INT
DECLARE @noi CHAR
DECLARE @result INT
SELECT @i=1, @result=0
WHILE (@i<=LEN(@input))
BEGIN
SELECT @noi=SUBSTRING(@input,@i,1)
SELECT @result=@result+ (ASCII(@noi)-48)*POWER(2,LEN(@input)-@i)
SELECT @i=@i+1
END
RETURN @result
END
GO
SELECT dbo.convbin2dec('1011001')
DROP FUNCTION dbo.convbin2dec

-----------
89

(1 row(s) affected)

Dies ist die Adaption der Excel Funktion BININDEZ().

Tags: Tags:
Dieser Eintrag wurde eingetragen von und ist abgelegt unter SQL Server. Tags: , ,

Noch kein Feedback


Formular wird geladen...