有没有办法在Postgres“位串”类型中获得1的总数?Postgres位掩码中“1”的总数
回答
如果你需要的是真正有效的,这里有一个讨论: Efficiently determining the number of bits set in the contents of, a VARBIT field
第一位?或者翻转的总位数?前者:位掩码(& 1)位。后者:一个讨厌的查询,如:
SELECT (myBit & 1 + myBit >> 1 & 1 + myBit >> 2 & 1) AS bitCount FROM myBitTable;
我想,你也可以转换为字符串并计算在PL/SQL 1的。
翻转的总位数。铸造到一个字符串似乎在史诗上是非高性能的。我想我可以编写一个函数来处理一系列的位(我不知道PL/SQL是否足以知道我是否可以轻松地循环比特并提取结果) – 2009-12-15 21:56:31
嗯......它看起来像位掩码已*字符串内部,所以也许这种解决方案并不像看起来那么糟糕。 – 2009-12-15 21:57:59
你有一个简单的方法使用plpgsql here。
# select length(replace(x::text, '0', '')) from (values ('1010111101'::bit varying)) as something(x);
length
--------
7
(1 row)
而且没有串转换方法:
# select count(*) from (select x, generate_series(1, length(x)) as i from (values ('1010111101'::bit varying)) as something(x)) as q where substring(x, i, 1) = B'1';
count
-------
7
(1 row)
我喜欢字符串replace&length方法。 +1 – pestilence669 2009-12-16 19:13:13
我知道,这已经是一个老话题,但我发现一个很酷的答案在这里:https://stackoverflow.com/a/38971017/4420662
所以适应这将是:
=# select length(regexp_replace((B'1010111101')::text, '[^1]', '', 'g'));
length
--------
7
(1 row)
- 1. 设置1位位掩码的名称
- 2. 映射整数位掩码
- 3. 使用位掩码或掩码
- 4. 使用位掩码
- 5. RegEx带位掩码?
- 6. Little Endian位掩码
- 7. 位掩码问题
- 8. 位掩码操作
- 9. FilterIterator位掩码(或位域)
- 10. 检查的NSUnderlineStyle位掩码
- 11. 位掩码操作的ByteArray
- 12. 可能ipaddress.collapse_addresses()崩溃超过1位的掩码?
- 13. SpriteKit中的位掩码问题SWIFT
- 14. SPARC - 没有移位的位掩码
- 15. 位掩码参数命名约定?
- 16. pandas中的掩码数
- 17. 位掩码与单独列
- 18. 了编译时位掩码
- 19. 结合多个位掩码
- 20. 位域掩码计算宏
- 21. rails simple_form位掩码属性
- 22. Java位掩码范围
- 23. C#位掩码验证
- 24. 使用1的补码生成显示第一个非零位的掩码
- 25. 只替换掩码numpy数组中的未掩码值
- 26. 如何在php中实现位掩码?
- 27. 在ActiveRecord中通过位掩码搜索
- 28. 位掩码翻转位...没有XOR?
- 29. 电话号码前三位掩码
- 30. 使用SIMD,我如何将8位掩码扩展为16位掩码?
@YhhudaKatz:链接中的讨论很有趣,但它是关于“第一位设置”和“最后一位设置”,它并不回答手头的问题。这怎么可能是正确的答案? – 2011-10-01 20:24:23