Zum Inhalt springen

Bitstring-Funktionen

Dieser Abschnitt beschreibt Funktionen und Operatoren zum Untersuchen und Manipulieren von BITSTRING-Werten. Bitstrings müssen bei den bitweisen Operanden AND, OR und XOR dieselbe Länge haben. Beim Bit-Shifting bleibt die ursprüngliche Länge der Zeichenkette erhalten.

Bitstring-Operatoren

Die folgende Tabelle zeigt die verfügbaren mathematischen Operatoren für den Typ BIT.

Operator Beschreibung Beispiel Ergebnis
& Bitweises AND '10101'::BITSTRING & '10001'::BITSTRING 10001
` ` Bitweises OR `‘1011’::BITSTRING
xor Bitweises XOR xor('101'::BITSTRING, '001'::BITSTRING) 100
~ Bitweises NOT ~('101'::BITSTRING) 010
<< Bitweise Linksverschiebung '1001011'::BITSTRING << 3 1011000
>> Bitweise Rechtsverschiebung '1001011'::BITSTRING >> 3 0001001

Bitstring-Funktionen

Die folgende Tabelle zeigt die verfügbaren skalaren Funktionen für den Typ BIT.

Name Beschreibung
bit_count(bitstring) Liefert die Anzahl gesetzter Bits im Bitstring.
bit_length(bitstring) Liefert die Anzahl der Bits im Bitstring.
bit_position(substring, bitstring) Liefert den ersten Startindex der angegebenen Teilzeichenkette innerhalb der Bits oder null, wenn sie nicht vorkommt. Das erste (linkeste) Bit hat den Index 1.
bitstring(bitstring, length) Liefert einen Bitstring festgelegter Länge.
get_bit(bitstring, index) Extrahiert das n-te Bit aus dem Bitstring; das erste (linkeste) Bit hat den Index 0.
length(bitstring) Alias für bit_length.
octet_length(bitstring) Liefert die Anzahl der Bytes im Bitstring.
set_bit(bitstring, index, new_value) Setzt das n-te Bit im Bitstring auf newvalue; das erste (linkeste) Bit hat den Index 0. Liefert einen neuen Bitstring.

bit_count(bitstring)

| Beschreibung | Liefert die Anzahl gesetzter Bits im Bitstring. | | Beispiel | bit_count('1101011'::BITSTRING) | | Ergebnis | 5 |

bit_length(bitstring)

| Beschreibung | Liefert die Anzahl der Bits im Bitstring. | | Beispiel | bit_length('1101011'::BITSTRING) | | Ergebnis | 7 |

bit_position(substring, bitstring)

| Beschreibung | Liefert den ersten Startindex der angegebenen Teilzeichenkette innerhalb der Bits oder null, wenn sie nicht vorkommt. Das erste (linkeste) Bit hat den Index 1 | | Beispiel | bit_position('010'::BITSTRING, '1110101'::BITSTRING) | | Ergebnis | 4 |

bitstring(bitstring, length)

| Beschreibung | Liefert einen Bitstring festgelegter Länge. | | Beispiel | bitstring('1010'::BITSTRING, 7) | | Ergebnis | 0001010 |

get_bit(bitstring, index)

| Beschreibung | Extrahiert das n-te Bit aus dem Bitstring; das erste (linkeste) Bit hat den Index 0. | | Beispiel | get_bit('0110010'::BITSTRING, 2) | | Ergebnis | 1 |

length(bitstring)

| Beschreibung | Alias für bit_length. | | Beispiel | length('1101011'::BITSTRING) | | Ergebnis | 7 |

octet_length(bitstring)

| Beschreibung | Liefert die Anzahl der Bytes im Bitstring. | | Beispiel | octet_length('1101011'::BITSTRING) | | Ergebnis | 1 |

set_bit(bitstring, index, new_value)

| Beschreibung | Setzt das n-te Bit im Bitstring auf newvalue; das erste (linkeste) Bit hat den Index 0. Liefert einen neuen Bitstring. | | Beispiel | set_bit('0110010'::BITSTRING, 2, 0) | | Ergebnis | 0100010 |

Bitstring-Aggregatfunktionen

Diese Aggregatfunktionen stehen für den Typ BIT zur Verfügung.

Name Beschreibung
bit_and(arg) Liefert die bitweise AND-Operation über alle Bitstrings in einem gegebenen Ausdruck.
bit_or(arg) Liefert die bitweise OR-Operation über alle Bitstrings in einem gegebenen Ausdruck.
bit_xor(arg) Liefert die bitweise XOR-Operation über alle Bitstrings in einem gegebenen Ausdruck.
bitstring_agg(arg) Liefert einen Bitstring mit gesetzten Bits für jede in arg definierte eindeutige Position.
bitstring_agg(arg, min, max) Liefert einen Bitstring mit gesetzten Bits für jede in arg definierte eindeutige Position. Alle Positionen müssen im Bereich [min, max] liegen, sonst wird ein Out of Range Error geworfen.

bit_and(arg)

| Beschreibung | Liefert die bitweise AND-Operation über alle Bitstrings in einem gegebenen Ausdruck. | | Beispiel | bit_and(A) |

bit_or(arg)

| Beschreibung | Liefert die bitweise OR-Operation über alle Bitstrings in einem gegebenen Ausdruck. | | Beispiel | bit_or(A) |

bit_xor(arg)

| Beschreibung | Liefert die bitweise XOR-Operation über alle Bitstrings in einem gegebenen Ausdruck. | | Beispiel | bit_xor(A) |

bitstring_agg(arg)

| Beschreibung | Die Funktion bitstring_agg nimmt einen beliebigen Ganzzahltyp als Eingabe und liefert einen Bitstring mit gesetzten Bits für jeden eindeutigen Wert. Das linkeste Bit steht für den kleinsten Wert in der Spalte, das rechteste für den Maximalwert. Wenn möglich, werden Min und Max aus den Spaltenstatistiken ermittelt. Andernfalls können Min- und Max-Werte auch angegeben werden. | | Beispiel | bitstring_agg(A) |

Tipp Die Kombination von bit_count und bitstring_agg kann als Alternative zu count(DISTINCT ...) dienen, mit möglichen Leistungsgewinnen bei niedriger Kardinalität und dichten Werten.

bitstring_agg(arg, min, max)

| Beschreibung | Liefert einen Bitstring mit gesetzten Bits für jede in arg definierte eindeutige Position. Alle Positionen müssen im Bereich [min, max] liegen, sonst wird ein Out of Range Error geworfen. | | Beispiel | bitstring_agg(A, 1, 42) |