Kategorien:

Aggregationsfunktionen (Bitweise), Fensterfunktionen (Allgemein), Bitweise Ausdrucksfunktionen

BITXOR_AGG

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

Wenn dieses Bit bei einer geraden Anzahl von Zeilen auf 1 gesetzt ist, gibt die Funktion an jeder Bitposition 0 für das Bit zurück; wenn dieses Bit bei einer ungeraden Anzahl von Zeilen auf 1 gesetzt hat, dann gibt die Funktion für das Bit 1 zurück.

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

Aliasse:

BITXORAGG , BIT_XOR_AGG, BIT_XORAGG

Siehe auch:

BITAND_AGG, BITOR_AGG

BITXOR

Syntax

Aggregatfunktion

BITXOR_AGG( [ DISTINCT ] <expr1> )
Copy

Fensterfunktionen

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

Argumente

expr1

Der Eingabeausdruck muss ein Ausdruck sein, der in eine Zahl ausgewertet oder in eine Zahl umgewandelt werden kann.

expr2

Mit diesem Ausdruck werden die Zeilen in Partitionen gruppiert.

Rückgabewerte

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

Nutzungshinweise

  • Numerische Werte werden zum nächsten ganzzahligen 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.

  • Bei Verwendung als Fensterfunktion:

    • Diese Funktion unterstützt nicht:

      • ORDER BY-Unterklausel in der OVER()-Klausel

      • 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;
+-------+---------+------+------+
| 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 |
+-------+---------+------+------+
Copy

Fragen Sie die Daten ab:

select bitxor_agg(k), bitxor_agg(d), bitxor_agg(s1) from bitwise_example;
+---------------+---------------+----------------+
| BITXOR_AGG(K) | BITXOR_AGG(D) | BITXOR_AGG(S1) |
|---------------+---------------+----------------|
|            31 |            12 |              0 |
+---------------+---------------+----------------+
Copy

Fragen Sie die Daten ab, und verwenden Sie GROUP BY:

select s2, bitxor_agg(k), bitxor_agg(d) from bitwise_example group by s2
    order by 3;
+------+---------------+---------------+
| S2   | BITXOR_AGG(K) | BITXOR_AGG(D) |
|------+---------------+---------------|
| one  |            15 |             1 |
| two  |            22 |             4 |
| nine |          NULL |             9 |
| null |             6 |          NULL |
+------+---------------+---------------+
Copy

Wenn Sie diese Funktionszeichenfolgen übergeben, die nicht in Zahlen konvertiert werden können, erhalten Sie eine Fehlermeldung:

select bitxor_agg(s2) from bitwise_example;
Copy
100038 (22018): Numeric value 'one' is not recognized
Copy