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 |
+-------+------+------+
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 | +-------+------+-------------------+
Boolesche Spalte in Prädikaten:
SELECT * FROM test_boolean WHERE NOT b AND (n < 1); +-------+---+----+ | B | N | S | |-------+---+----| | False | 0 | no | +-------+---+----+
Text in Boolean konvertiert:
SELECT s, TO_BOOLEAN(s) FROM test_boolean; +------+---------------+ | S | TO_BOOLEAN(S) | |------+---------------| | yes | True | | no | False | | NULL | NULL | +------+---------------+
Zahl in Boolean konvertiert:
SELECT n, TO_BOOLEAN(n) FROM test_boolean; +------+---------------+ | N | TO_BOOLEAN(N) | |------+---------------| | 1 | True | | 0 | False | | NULL | NULL | +------+---------------+
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 | +----------------------+