Binärzahl in Dezimalzahl umwandeln

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().

Noch kein Feedback
Einen Kommentar hinterlassen

Ihre E-Mail-Adresse wird nicht auf dieser Seite angezeigt.
SchlechtExzellent
(Zeilenumbrüche werden zu <br />)
(For my next comment on this site)
(Allow users to contact me through a message form -- Your email will not be revealed!)
Dies ist ein Captcha Bild. Es wird benutzt, um Massenzugriffe von Robotern zu verhindern.
Bitte gib die Zeichen des obigen Bildes ein. (Groß/Kleinschreibung ist wichtig)
Trackback-Adresse für diesen Eintrag
Dies ist ein Captcha Bild. Es wird benutzt, um Massenzugriffe von Robotern zu verhindern.
Bitte gib die Zeichen des obigen Bildes ein. (Groß/Kleinschreibung ist wichtig)