我有一些二进制值,例如00,0000,001000.11111000,11111100000
我需要总结它,所以它变成0,0,1,5,5(总和0和1s)
我们怎样才能在SQL中做到这一点?
由于
答案 0 :(得分:0)
使用以下查询。如果需要,将其转换为函数。
create function dbo.fnSumChars(@someInt VARCHAR(20))
RETURNS INT
AS
BEGIN
DECLARE @count INT = LEN(@someInt),
@counter INT = 1
DECLARE @Sum INT = 0
WHILE @counter <= @count
BEGIN
SELECT @sum += CAST(SUBSTRING(CAST(@someInt AS VARCHAR), @counter, 1) AS int)
SELECT @counter += 1
END
RETURN @sum --5
END
这是函数,您可以像下面这样调用此函数
SELECT dbo.fnSumChars('1111100000')
答案 1 :(得分:0)
BinaryValues (Consider it a column name) 00 0000 001000等等。
编写一个函数(以任何名称调用它。例如: AddBinaryDigits ),它将以字符串格式的二进制值作为输入。
在函数内部并进行字符串操作。提取每个数字并将其添加。返回总和作为结果。
调用功能:
如果使用存储在表中的二进制值:
SELECT AddBinaryDigits(BinaryValues) FROM <WhatEverTableName>
如果使用固定值:
SELECT AddBinaryDigits('00')
SELECT AddBinaryDigits('0000')
SELECT AddBinaryDigits('001000')
等等。
编辑包含创建功能的请求。
CREATE FUNCTION <funtionName>
(
@ParameterName AS VARCHAR(expected string length like 10/15/20 etc.)
)
RETURNS INT
BEGIN
SQL Code to sum
RETURN SummedUpValue
END
答案 2 :(得分:0)
如果这些已经是字符串格式,这是最简单的:
select len(replace('1111100000', '0', ''))
也不需要函数,因为它可以在查询中内联。功能,即使是轻功能,也会导致性能损失。