Logische Datentypen¶
Unter diesem Thema werden die in Snowflake unterstützten logischen Datentypen beschrieben.
Datentypen¶
Snowflake unterstützt einen einzigen logischen Datentyp (BOOLEAN).
BOOLEAN¶
BOOLEAN kann die Werte TRUE oder FALSE haben. BOOLEAN kann auch einen UNKNOWN Wert haben, der durch NULL dargestellt wird. BOOLEAN Spalten können sowohl in Ausdrücken (z. B. einer SELECT-Liste), als auch in Prädikaten (z. B. einer WHERE-Klausel) verwendet werden.
Der Datentyp BOOLEAN erlaubt Unterstützung für Ternäre Logik.
BOOLEAN Konvertierung¶
Snowflake unterstützt die Konvertierung nach und von BOOLEAN Werten.
Konvertierung in BOOLEAN Werten¶
Nicht-BOOLEAN Werte können explizit oder implizit in BOOLEAN-Werte umgewandelt werden.
Explizite Konvertierung¶
Sie können bestimmte Textzeichenfolgen und numerische Werte explizit in BOOLEAN Werte umwandeln, indem Sie die Funktionen TO_BOOLEAN oder CAST verwenden:
- 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.
Andere Textzeichenfolgen können nicht in BOOLEAN Werte umgewandelt werden.
- Numerische Konvertierung:
Null (
0
) wird in FALSE konvertiert.Alle Nicht-Null-Werte werden in TRUE konvertiert.
Implizite Konvertierung¶
Snowflake kann bestimmte Textzeichenfolgen und numerische Werte implizit in BOOLEAN Werte umwandeln:
- Zeichenfolgenkonvertierung:
'true'
wird in TRUE konvertiert.'false'
wird in FALSE konvertiert.Bei der Konvertierung wird nicht zwischen Groß- und Kleinschreibung unterschieden.
- Numerische Konvertierung:
Null (
0
) wird in FALSE konvertiert.Alle Nicht-Null-Werte werden in TRUE konvertiert.
Konvertierung von BOOLEAN¶
BOOLEAN Werte können explizit oder implizit in nicht-BOOLEAN Werte umgewandelt werden.
Explizite Konvertierung¶
Sie können BOOLEAN Werte explizit in Textzeichenfolgen oder numerische Werte umwandeln:
- 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¶
Snowflake kann BOOLEAN Werte implizit in Textzeichenfolgen umwandeln:
- Zeichenfolgenkonvertierung:
TRUE wird in
'true'
konvertiert.FALSE wird in
'false'
konvertiert.
Beispiele¶
Erstellen Sie eine Tabelle, und fügen Sie Zeilen ein:
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 |
+-------+------+------+
Die folgende Abfrage enthält einen BOOLEAN-typisierten 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 |
+-------+------+-------------------+
Das folgende Beispiel verwendet eine BOOLEAN Spalte in Prädikaten:
SELECT * FROM test_boolean WHERE NOT b AND (n < 1);
+-------+---+----+
| B | N | S |
|-------+---+----|
| False | 0 | no |
+-------+---+----+
Das folgende Beispiel wandelt einen Textwert in einen BOOLEAN Wert um. Das Beispiel verwendet die SYSTEM$TYPEOF, um den Typ des Wertes nach der Konvertierung anzuzeigen.
SELECT s,
TO_BOOLEAN(s),
SYSTEM$TYPEOF(TO_BOOLEAN(s))
FROM test_boolean;
+------+---------------+------------------------------+
| S | TO_BOOLEAN(S) | SYSTEM$TYPEOF(TO_BOOLEAN(S)) |
|------+---------------+------------------------------|
| yes | True | BOOLEAN[SB1] |
| no | False | BOOLEAN[SB1] |
| NULL | NULL | BOOLEAN[SB1] |
+------+---------------+------------------------------+
Im folgenden Beispiel wird ein Zahlenwert in einen BOOLEAN Wert umgewandelt:
SELECT n,
TO_BOOLEAN(n),
SYSTEM$TYPEOF(TO_BOOLEAN(n))
FROM test_boolean;
+------+---------------+------------------------------+
| N | TO_BOOLEAN(N) | SYSTEM$TYPEOF(TO_BOOLEAN(N)) |
|------+---------------+------------------------------|
| 1 | True | BOOLEAN[SB1] |
| 0 | False | BOOLEAN[SB1] |
| NULL | NULL | BOOLEAN[SB1] |
+------+---------------+------------------------------+
In diesem Beispiel wandelt Snowflake einen BOOLEAN Wert implizit in einen Textwert um:
SELECT 'Text for ' || s || ' is ' || b AS result,
SYSTEM$TYPEOF('Text for ' || s || ' is ' || b) AS type_of_result
FROM test_boolean;
+----------------------+------------------------+
| RESULT | TYPE_OF_RESULT |
|----------------------+------------------------|
| Text for yes is true | VARCHAR(16777216)[LOB] |
| Text for no is false | VARCHAR(16777216)[LOB] |
| NULL | VARCHAR(16777216)[LOB] |
+----------------------+------------------------+