論理データ型¶
このトピックでは、Snowflakeでサポートされている論理データ型について説明します。
データ型¶
Snowflakeは、単一の論理データ型の BOOLEAN をサポートしています。
BOOLEAN¶
BOOLEAN は、 TRUE または FALSE の値を持つことができます。BOOLEAN は、 NULL で表される UNKNOWN 値を持つこともできます。BOOLEAN 列は、述語(例: WHERE 句)と同様に式(例: SELECT リスト)で使用することができます。
BOOLEAN データ型は、 三項論理 のサポートを有効にします。
BOOLEAN 変換¶
Snowflakeは、 BOOLEAN との変換をサポートしています。
BOOLEAN への変換¶
BOOLEAN 以外の値は、明示的または暗黙的に BOOLEAN 値に変換できます。
明示的な変換¶
TO_BOOLEAN または CAST 関数を使用すると、特定の テキスト文字列 および 数字 の値を BOOLEAN 値に明示的に変換することができます。
- 文字列変換:
TRUE に変換された文字列:
'true'
、't'
、'yes'
、'y'
、'on'
、'1'
。FALSE に変換された文字列:
'false'
、'f'
、'no'
、'n'
、'off'
、'0'
。変換では大文字と小文字は区別されません。
その他の文字列は、 BOOLEAN 値に変換できません。
- 数字変換:
ゼロ(
0
)は FALSEに変換されます。ゼロ以外の値は TRUE に変換されます。
暗黙的な変換¶
Snowflakeは、特定の文字列や数字の値を暗黙的に BOOLEAN 値に変換します。
- 文字列変換:
'true'
は TRUE に変換されます。'false'
は FALSE に変換されます。変換では大文字と小文字は区別されません。
- 数字変換:
ゼロ(
0
)は FALSEに変換されます。ゼロ以外の値は TRUE に変換されます。
BOOLEAN からの変換¶
BOOLEAN 値は、明示的または暗黙的に、 BOOLEAN 以外の値に変換できます。
明示的な変換¶
BOOLEAN 値を明示的に文字列や数値にキャストすることができます。
- 文字列変換:
TRUE は
'true'
に変換されます。FALSE は
'false'
に変換されます。
- 数字変換:
TRUE は
1
に変換されます。FALSE は
0
に変換されます。
暗黙的な変換¶
Snowflakeは、 BOOLEAN 値を暗黙的に文字列値に変換することができます。
- 文字列変換:
TRUE は
'true'
に変換されます。FALSE は
'false'
に変換されます。
例¶
テーブルを作成して値を挿入します。
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 |
+-------+------+------+
以下のクエリには、 BOOLEAN 型の式が含まれています。
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 |
+-------+------+-------------------+
以下の例では、述語で BOOLEAN 列を使用しています。
SELECT * FROM test_boolean WHERE NOT b AND (n < 1);
+-------+---+----+
| B | N | S |
|-------+---+----|
| False | 0 | no |
+-------+---+----+
次の例は、テキスト値を BOOLEAN 値にキャストします。この例では、変換後の値の型を示すために SYSTEM$TYPEOF を使用しています。
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] |
+------+---------------+------------------------------+
次の例は、数字の値を BOOLEAN 値にキャストします。
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] |
+------+---------------+------------------------------+
この例では、Snowflakeは暗黙的に BOOLEAN 値をテキスト値に変換します。
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] |
+----------------------+------------------------+