Logische Datentypen

Unter diesem Thema werden die in Snowflake unterstützten logischen Datentypen beschrieben.

Unter diesem Thema:

Datentypen

Snowflake unterstützt einen einzigen logischen Datentyp: BOOLEAN.

BOOLEAN

BOOLEAN kann die Werte TRUE oder FALSE haben. BOOLEAN kann auch einen „unbekannten“ Wert haben, der durch NULL dargestellt wird. Boolesche Spalten können in Ausdrücken (z. B. SELECT-Liste) und Prädikaten (z. B. WHERE-Klausel) verwendet werden.

Der Datentyp BOOLEAN erlaubt Unterstützung für Ternäre Logik.

Boolesche Konvertierung

Konvertierung in Boolean

Explizite Konvertierung

Boolesche Werte können mithilfe der Funktionen TO_BOOLEAN oder CAST explizit aus Textzeichenfolgen und numerischen Werten konvertiert werden:

Zeichenfolgenkonvertierung:
  • In TRUE konvertierte Zeichenfolgen: 'true', 't', 'yes', 'y', 'on', '1'.

  • In FALSE konvertierte Zeichenfolgen: 'false', 'f', 'no', 'n', 'off', '0'.

  • Bei der Konvertierung wird nicht zwischen Groß- und Kleinschreibung unterschieden.

  • Alle anderen Textzeichenfolgen können nicht in boolesche Werte konvertiert werden.

Numerische Konvertierung:
  • Null (0) wird in FALSE konvertiert.

  • Alle Nicht-Null-Werte werden in TRUE konvertiert.

Implizite Konvertierung

Boolesche Werte können implizit von Textzeichenfolgenwerten in boolesche Werte konvertiert werden.

Zeichenfolgenkonvertierung:
  • „true“ wird in TRUE konvertiert.

  • „false“ wird in FALSE konvertiert.

Die Zeichenfolgenwerte unterscheiden nicht zwischen Groß- und Kleinschreibung.

Numerische Konvertierung:
  • Null (0) wird in FALSE konvertiert.

  • Alle Nicht-Null-Werte werden in TRUE konvertiert.

Konvertierung von Boolean

Explizite Konvertierung

Boolesche Werte können explizit in Zeichenfolgenwerte oder numerische Werte umgewandelt werden.

Zeichenfolgenkonvertierung:
  • TRUE wird in „true“ konvertiert.

  • FALSE wird in „false“ konvertiert.

Numerische Konvertierung:
  • TRUE wird in 1 konvertiert.

  • FALSE wird in 0 konvertiert.

Implizite Konvertierung

Zeichenfolgenkonvertierung:
  • TRUE wird in „true“ konvertiert.

  • FALSE wird in „false“ konvertiert.

Beispiele

CREATE OR REPLACE TABLE test_boolean(
   b BOOLEAN,
   n NUMBER,
   s STRING);

INSERT INTO test_boolean VALUES (true, 1, 'yes'), (false, 0, 'no'), (null, null, null);

SELECT * FROM test_boolean;

+-------+------+------+
| B     |    N | S    |
|-------+------+------|
| True  |    1 | yes  |
| False |    0 | no   |
| NULL  | NULL | NULL |
+-------+------+------+
Copy

Boolescher Ausdruck:

SELECT b, n, NOT b AND (n < 1) FROM test_boolean;

+-------+------+-------------------+
| B     |    N | NOT B AND (N < 1) |
|-------+------+-------------------|
| True  |    1 | False             |
| False |    0 | True              |
| NULL  | NULL | NULL              |
+-------+------+-------------------+
Copy

Boolesche Spalte in Prädikaten:

SELECT * FROM test_boolean WHERE NOT b AND (n < 1);

+-------+---+----+
| B     | N | S  |
|-------+---+----|
| False | 0 | no |
+-------+---+----+
Copy

Text in Boolean konvertiert:

SELECT s, TO_BOOLEAN(s) FROM test_boolean;

+------+---------------+
| S    | TO_BOOLEAN(S) |
|------+---------------|
| yes  | True          |
| no   | False         |
| NULL | NULL          |
+------+---------------+
Copy

Zahl in Boolean konvertiert:

SELECT n, TO_BOOLEAN(n) FROM test_boolean;

+------+---------------+
|    N | TO_BOOLEAN(N) |
|------+---------------|
|    1 | True          |
|    0 | False         |
| NULL | NULL          |
+------+---------------+
Copy

Boolean implizit in Text konvertiert:

SELECT 'Text for ' || s || ' is ' || b AS result FROM test_boolean;

+----------------------+
| RESULT               |
|----------------------|
| Text for yes is true |
| Text for no is false |
| NULL                 |
+----------------------+
Copy