如何计算变量中0和1的数量?

时间:2015-02-16 12:42:46

标签: sql-server

给定一个包含一系列0和1的变量,我如何计算变量中每个变量的数量?

以下是一个例子:

SET @AnswerGridCorrect = '0010010';

我需要做的是将注释返回到一个名为@Hint的变量中,以便它包含:

"Select 2 out of 7 choices"

3 个答案:

答案 0 :(得分:2)

使用此:

DECLARE @AnswerGridCorrect VARCHAR(MAX)
DECLARE @Question VARCHAR(MAX)

SET @AnswerGridCorrect = '0010010';

SET @question = 'Select ' + CAST(LEN(@AnswerGridCorrect) - LEN(REPLACE(@AnswerGridCorrect, '1', '')) AS VARCHAR(MAX)) +
                ' out of ' + CAST(LEN(@AnswerGridCorrect) AS VARCHAR(MAX)) + ' choices'

SELECT @Question

<强>输出:

Select 2 out of 7 choices

答案 1 :(得分:1)

您需要遍历每个位置并测试它是0还是1.例如:

while i <= 7 begin
    if substr(@AnswerGridCorrect,i,1) == 1
      set count = count + 1
    set i = i + 1
end

注意以上是一个不完整的例子,但它应该给你一个想法。

另请参阅https://msdn.microsoft.com/en-us/library/ms187748.aspx

答案 2 :(得分:0)

由于你只有0和1,这是相当容易的:

最好的解决方案是使用逐位AND(某些东西)

public bool CheckBit(byte b, int bitNumber)
    {
        var bit = (b & (1 << bitNumber - 1)) != 0;
        return bit;
    } 

如果你在这里逐个传递所有的0和1(作为bitNumber),你可以计算返回true的数量(如果两者都是1)和返回false的数量(如果传递的数字是0)甚至找出哪一个设置为0,哪一个设置为1.

希望这会有所帮助:)