我正在使用SQL Server 2012 Express。我有一个1的字符串和0的32位长度。
01010010000100010111001101110011
如何在SQL脚本中将其转换为带符号的十进制数?
目前,我在网上使用Web工具作为答案,而我目前的搜索并没有使我找到所需的答案。
您可以尝试如下-
DECLARE @Binary VARCHAR(100) = '01010010000100010111001101110011';
DECLARE @characters CHAR(36),
@result BIGINT,
@index SMALLINT,
@base BIGINT;
SELECT @characters = '0123456789abcdefghijklmnopqrstuvwxyz',
@result = 0,
@index = 0,
@base = 2;
WHILE @index < LEN(@Binary)
BEGIN
SELECT @result = @result + POWER(@base, @index) * (CHARINDEX(SUBSTRING(@Binary, LEN(@Binary) - @index, 1), @characters) - 1);
SET @index = @index + 1;
END
SELECT @result;
这将帮助您从任何基数(我用于@base as 2
二进制)转换为基数10。从最右边开始,一直向左移动,直到数字用完。转换是(基础^索引)*数字。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句