我有一個 bytea 格式的欄位,我正在嘗試計算該欄位中有多少個零位元組(postgresql)。
示例字串:
0x202ee0ed0000000000000000000000000000000000000000000000000000000000014370000000000000000000000000000000000000000000000000000000003f8affe7
我最初試圖通過計算00發生的頻率來做到這一點,但這可能不準確,因為它不會檢查它是一個位元組還是兩個 0 碰巧彼此相鄰。
我目前正在使用這個regex_replace(從另一個問題中找到)來強制_在位元組之間插入一個,以便我可以計算00出現次數,但這會減慢查詢的速度,而這會減慢查詢的速度,而簡單replace的大約為 100k-1m 行:
regexp_replace(data::text, '(..)', E'\\1_', 'g')- 產生一些東西喜歡20_2e_e0...
我想知道是否有人知道一種更高效的方法來計算位元組/字串中零或非零位元組的數量?
uj5u.com熱心網友回復:
我認為在 SQL 中沒有非常簡單有效的方法。我能想到的最好的是:
SELECT cardinality(
string_to_array(
encode('\xDEADF00D0000', 'escape'),
'\000'
)
) - 1;
?column?
══════════
2
(1 row)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/351398.html
標籤:sql PostgreSQL 数数 拜茶
