有沒有辦法在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. Golang:IP掩碼的位數
- 3. 映射整數位掩碼
- 4. 使用位掩碼或掩碼
- 5. 構建位掩碼?按位數據包
- 6. 位掩碼和選擇偶數位
- 7. RegEx帶位掩碼?
- 8. 位掩碼操作
- 9. 使用位掩碼
- 10. 生成位掩碼
- 11. Little Endian位掩碼
- 12. 位掩碼問題
- 13. 位掩碼功能
- 14. FilterIterator位掩碼(或位域)
- 15. 64位位掩碼和javascript
- 16. 的Ruby語法:位掩碼
- 17. 位掩碼操作的ByteArray
- 18. 檢查的NSUnderlineStyle位掩碼
- 19. 位掩碼vs移位(+ java字節碼)
- 20. 可能ipaddress.collapse_addresses()崩潰超過1位的掩碼?
- 21. 高速緩存中的位掩碼
- 22. SpriteKit中的位掩碼問題SWIFT
- 23. Powershell中的位掩碼轉換
- 24. SPARC - 沒有移位的位掩碼
- 25. 位掩碼的最後5位
- 26. 應用位掩碼的位向量
- 27. pandas中的掩碼數
- 28. 位掩碼參數命名約定?
- 29. 結合多個位掩碼
- 30. 寫入圖像位掩碼
@YhhudaKatz:鏈接中的討論很有趣,但它是關於「第一位設置」和「最後一位設置」,它並不回答手頭的問題。這怎麼可能是正確的答案? – 2011-10-01 20:24:23