Gibt es eine Möglichkeit, die Gesamtzahl von 1en in einem Postgres-Bitstring-Typ zu erhalten?
Wenn Sie es wirklich effizient brauchen, hier ist eine Diskussion: Effizient die Anzahl der Bits zu bestimmen im Inhalt von, ein VARBIT-Feld
Das erste / erste Bit? Oder die Gesamtzahl der Bits eingeschaltet? Ersteres: Bitmaske (& amp; 1) das Bit. Letzteres: Eine unangenehme Frage wie:
SELECT (myBit & 1 + myBit >> 1 & 1 + myBit >> 2 & 1) AS bitCount FROM myBitTable;
Ich nehme an, Sie könnten auch in einen String umwandeln und die 1 in PL / SQL zählen.
Gestützt auf die Diskussion hier, der oben erwähnte Thread Effizient die Anzahl der Bits in der festgelegt Inhalt von, einem VARBIT-Feld , Auf der Seite Bit Twiddling Hacks habe ich eine PostgreSQL-Erweiterung veröffentlicht: pg_bitcount . Wenn Sie diese Erweiterung installieren (siehe dortige Anweisungen), können Sie die Anzahl der in einer Bitfolge gesetzten Bits mit:
zählen %Vor% Ich habe eine Reihe verschiedener Algorithmen für die Leistung verglichen und die Verwendung einer Tabellensuche scheint am schnellsten zu sein. Sie sind alle viel schneller als in Text konvertieren und '0'
durch ''
ersetzen.
Tags und Links postgresql