Kategorien:

Aggregatfunktionen (Bitwise) , Fensterfunktionen (General) , Bitweise Ausdrucksfunktionen

BITOR_AGG

Gibt den bitweisen OR-Wert aller numerischen Einträge in einer Gruppe zurück, die ungleich NULL sind.

Wenn bei mindestens einer Zeile das Bit auf 1 gesetzt ist, wird für jede Bitposition das Bit im Ergebnis auf 1 gesetzt. Wenn dieses Bit bei allen Zeilen auf null gesetzt ist, ist das Ergebnis null.

Wenn alle Einträge in der Gruppe NULL sind oder die Gruppe leer ist, gibt die Funktion NULL zurück.

Aliasse:

BITORAGG, BIT_OR_AGG, BIT_ORAGG

Siehe auch:

BITAND_AGG, BITXOR_AGG

BITOR

Syntax

Aggregatfunktion

BITOR_AGG( <expr1> )
Copy

Fensterfunktionen

BITOR_AGG( <expr1> ) OVER ( [ PARTITION BY <expr2> ] )
Copy

Argumente

expr1

Dieser Ausdruck muss einen numerischen Wert oder einen Wert eines Datentyps ergeben, der in einen numerischen Wert umgewandelt werden kann.

expr2

Mit diesem Ausdruck werden die Zeilen in Partitionen gruppiert.

Rückgabewerte

Der Datentyp des zurückgegebenen Werts ist NUMBER(38, 0).

Nutzungshinweise

  • Numerische Werte werden zum nächsten INTEGER-Datentyp aggregiert. Dezimal- und Gleitkommawerte werden vor der Aggregation auf die nächste ganze Zahl gerundet.

  • Durch das Aggregieren einer Zeichen-/Textspalte (Datentyp VARCHAR, CHAR, STRING usw.) werden die Eingabewerte implizit in FLOAT umgewandelt und dann auf die nächste ganze Zahl gerundet. Wenn die Umwandlung nicht möglich ist, wird der Wert als NULL behandelt.

  • Das Schlüsselwort DISTINCT kann bei diesen Funktionen angegeben werden, hat jedoch keine Auswirkungen.

  • Wenn diese Funktion als Fensterfunktion aufgerufen wird, wird sie nicht unterstützt:

    • Eine ORDER BY-Klausel innerhalb der OVER-Klausel.

    • Explizite Fensterrahmen.

Beispiele

Erstellen Sie die Tabelle, und laden Sie die Daten:

CREATE OR REPLACE TABLE bitwise_example
  (k INT, d DECIMAL(10,5), s1 VARCHAR(10), s2 VARCHAR(10));

INSERT INTO bitwise_example VALUES
  (15, 1.1, '12','one'),
  (26, 2.9, '10','two'),
  (12, 7.1, '7.9','two'),
  (14, NULL, NULL,'null'),
  (8, NULL, NULL, 'null'),
  (NULL, 9.1, '14','nine');
Copy

Zeigen Sie die Daten an:

SELECT k AS k_col, d AS d_col, s1, s2
  FROM bitwise_example
  ORDER BY k_col;
Copy
+-------+---------+------+------+
| K_COL |   D_COL | S1   | S2   |
|-------+---------+------+------|
|     8 |    NULL | NULL | null |
|    12 | 7.10000 | 7.9  | two  |
|    14 |    NULL | NULL | null |
|    15 | 1.10000 | 12   | one  |
|    26 | 2.90000 | 10   | two  |
|  NULL | 9.10000 | 14   | nine |
+-------+---------+------+------+

Fragen Sie die Daten ab:

SELECT BITOR_AGG(k), 
       BITOR_AGG(d), 
       BITOR_AGG(s1) 
  FROM bitwise_example;
Copy
+--------------+--------------+---------------+
| BITOR_AGG(K) | BITOR_AGG(D) | BITOR_AGG(S1) |
|--------------+--------------+---------------|
|           31 |           15 |            14 |
+--------------+--------------+---------------+

Fragen Sie die Daten ab und verwenden Sie eine GROUP BY-Klausel:

SELECT s2, 
       BITOR_AGG(k), 
       BITOR_AGG(d) 
  FROM bitwise_example group by s2
  ORDER BY 3;
Copy
+------+--------------+--------------+
| S2   | BITOR_AGG(K) | BITOR_AGG(D) |
|------+--------------+--------------|
| one  |           15 |            1 |
| two  |           30 |            7 |
| nine |         NULL |            9 |
| null |           14 |         NULL |
+------+--------------+--------------+

Wenn Sie diese Funktionszeichenfolgen übergeben, die nicht in NUMBER-Werte konvertiert werden können, wird ein Fehler zurückgegeben:

SELECT BITOR_AGG(s2) FROM bitwise_example;
Copy
100038 (22018): Numeric value 'one' is not recognized