SnowConvert: Redshift式

式リスト

説明

式リストは式の組み合わせで、メンバーシップ条件や比較条件(WHERE 句)や GROUP BY 句で使用できます。(Redshift SQL 言語リファレンス式リスト)。

この構文はSnowflakeで完全にサポートされています。

文法構文

 expression , expression , ... | (expression, expression, ...)
Copy

サンプルソースパターン

セットアップデータ

 CREATE TABLE table1 (
    quantity VARCHAR(50),
    fruit VARCHAR(50)
);

CREATE TABLE table2 (
    quantity VARCHAR(50),
    fruit VARCHAR(50)
);

CREATE TABLE table3 (
    id INT,
    name VARCHAR(50),
    quantity INT,
    fruit VARCHAR(50),
    price INT
);

INSERT INTO table1 (quantity, fruit)
VALUES
    ('one', 'apple'),
    ('two', 'banana'),
    ('three', 'cherry');

INSERT INTO table2 (quantity, fruit)
VALUES
    ('one', 'apple'),
    ('two', 'banana'),
    ('four', 'orange');

INSERT INTO table3 (id, name, quantity, fruit, price)
VALUES
    (1, 'Alice', 1, 'apple', 100),
    (2, 'Bob', 5, 'banana', 200),
    (3, 'Charlie', 10, 'cherry', 300),
    (4, 'David', 15, 'orange', 400);
Copy

IN 句

入力コード:
SELECT *
FROM table3
WHERE quantity IN (1, 5, 10);
Copy

ID

NAME

QUANTITY

FRUIT

PRICE

1

アリス

1

apple

100

2

ボブ

5

banana

200

3

チャーリー

10

cherry

300

出力コード:
 SELECT *
FROM
    table3
WHERE quantity IN (1, 5, 10);
Copy

ID

NAME

QUANTITY

FRUIT

PRICE

1

アリス

1

apple

100

2

ボブ

5

banana

200

3

チャーリー

10

cherry

300

比較

Input Code:
 SELECT *
FROM table3
WHERE (quantity, fruit) = (1, 'apple');
Copy

ID

NAME

QUANTITY

FRUIT

PRICE

1

アリス

1

apple

100

Output Code:
 SELECT *
FROM
    table3
WHERE (quantity, fruit) = (1, 'apple');
Copy

ID

NAME

QUANTITY

FRUIT

PRICE

1

アリス

1

apple

100

注釈

以下の演算子による式リスト比較は、Snowflakeでは動作が異なる場合があります。(<、<=、>、>=)。これらの演算子は、Snowflakeで完全な等価性を実現するために論理的 AND 操作に変換されます。

入力コード:

 SELECT (1,8,20) < (2,2,0) as r1,
       (1,null,2) > (1,0,8) as r2,
       (null,null,2) < (1,0,8) as r3,
       (1,0,null) <= (1,1,0) as r4,
       (1,1,0) >= (1,1,20) as r5;
Copy

R1

R2

R3

R4

R5

FALSE

FALSE

NULL

NULL

FALSE

出力コード:

 SELECT
    (1 < 2
    AND 8 < 2
    AND 20 < 0) as r1,
    (1 > 1
    AND null > 0
    AND 2 > 8) as r2,
    (null < 1
    AND null < 0
    AND 2 < 8) as r3,
    (1 <= 1
    AND 0 <= 1
    AND null <= 0) as r4,
    (1 >= 1
    AND 1 >= 1
    AND 0 >= 20) as r5;
Copy

R1

R2

R3

R4

R5

FALSE

FALSE

NULL

NULL

FALSE

ネストされたタプル

入力コード:
 SELECT *
FROM table3
WHERE (quantity, fruit) IN ((1, 'apple'), (5, 'banana'), (10, 'cherry'));
Copy

ID

NAME

QUANTITY

FRUIT

PRICE

1

アリス

1

apple

100

2

ボブ

5

banana

200

3

チャーリー

10

cherry

300

出力コード
 SELECT *
FROM
    table3
WHERE (quantity, fruit) IN ((1, 'apple'), (5, 'banana'), (10, 'cherry'));
Copy

ID

NAME

QUANTITY

FRUIT

PRICE

1

アリス

1

apple

100

2

ボブ

5

banana

200

3

チャーリー

10

cherry

300

ケースステートメント

入力コード:
 SELECT
    CASE
        WHEN quantity IN (1, 5, 10) THEN 'Found'
        ELSE 'Not Found'
    END AS result
FROM table3;
Copy

RESULT

見つかりました

見つかりました

見つかりました

見つかりません

見つかりません

見つかりません

出力コード
 SELECT
    CASE
        WHEN quantity IN (1, 5, 10) THEN 'Found'
        ELSE 'Not Found'
    END AS result
FROM
    table3;
Copy

RESULT

見つかりました

見つかりました

見つかりました

見つかりません

見つかりません

見つかりません

複数の式

入力コード:
 SELECT *
FROM table3
WHERE (quantity, fruit) IN ((1, 'apple'), (5, 'banana'), (10, 'cherry'))
  AND price IN (100, 200, 300);
Copy

ID

NAME

QUANTITY

FRUIT

PRICE

1

アリス

1

apple

100

2

ボブ

5

banana

200

3

チャーリー

10

cherry

300

出力コード
 SELECT *
FROM
    table3
WHERE (quantity, fruit) IN ((1, 'apple'), (5, 'banana'), (10, 'cherry'))
  AND price IN (100, 200, 300);
Copy

ID

NAME

QUANTITY

FRUIT

PRICE

1

アリス

1

apple

100

2

ボブ

5

banana

200

3

チャーリー

10

cherry

300

結合

入力コード:
 SELECT *
FROM table1 t1
JOIN table2 t2
    ON (t1.quantity, t1.fruit) = (t2.quantity, t2.fruit)
WHERE t1.quantity = 'one' AND t1.fruit = 'apple';
Copy

QUANTITY

FRUIT

QUANTITY

FRUIT

one

apple

one

apple

出力コード
 SELECT *
FROM
table1 t1
JOIN
        table2 t2
    ON (t1.quantity, t1.fruit) = (t2.quantity, t2.fruit)
WHERE t1.quantity = 'one' AND t1.fruit = 'apple';
Copy

QUANTITY

FRUIT

QUANTITY

FRUIT

one

apple

one

apple

既知の問題

問題は見つかりませんでした。

複合式

説明

複合式は、算術演算子によって結合された一連の単純式です。複合式の中で使用される単純式は、必ず数値を返さなければなりません。(RedShift SQL 言語リファレンス複合式)

文法構文

 expression operator {expression | (compound_expression)}
Copy

換算テーブル

RedshiftSnowflakeComments
|| (Concatenation)||Fully supported by Snowflake

サンプルソースパターン

入力コード:

 CREATE TABLE concatenation_demo (
    col1 VARCHAR(20),
    col2 INTEGER,
    col3 DATE
);

INSERT INTO concatenation_demo (col1, col2, col3) VALUES
('Hello', 42, '2023-12-01'),
(NULL, 0, '2024-01-01'),
('Redshift', -7, NULL);

SELECT 
    col1 || ' has number ' || col2 AS concat_string_number
FROM concatenation_demo;

SELECT 
    col1 || ' on ' || col3 AS concat_string_date
FROM concatenation_demo;

SELECT
    COALESCE(col1, 'Unknown') || ' with number ' || COALESCE(CAST(col2 AS VARCHAR), 'N/A') AS concat_with_null_handling
FROM concatenation_demo;
Copy

concat_string_number

Helloは42番です

<NULL>

Redshiftは-7番です

concat_string_date

2023年12月1日のHello

<NULL>

<NULL>

concat_with_null_handling

42番のHello

0番の不明

-7番のRedshift

出力コード:

 CREATE TABLE concatenation_demo (
    col1 VARCHAR(20),
    col2 INTEGER,
    col3 DATE
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "redshift",  "convertedOn": "12/16/2024",  "domain": "test" }}';

INSERT INTO concatenation_demo (col1, col2, col3) VALUES
('Hello', 42, '2023-12-01'),
(NULL, 0, '2024-01-01'),
('Redshift', -7, NULL);

SELECT
    col1 || ' has number ' || col2 AS concat_string_number
FROM
    concatenation_demo;

SELECT
    col1 || ' on ' || col3 AS concat_string_date
FROM
    concatenation_demo;

SELECT
    COALESCE(col1, 'Unknown') || ' with number ' || COALESCE(CAST(col2 AS VARCHAR), 'N/A') AS concat_with_null_handling
FROM
    concatenation_demo;
Copy

concat_string_number

Helloは42番です

<NULL>

Redshiftは-7番です

concat_string_date

2023年12月1日のHello

<NULL>

<NULL>

concat_with_null_handling

42番のHello

0番の不明

-7番のRedshift

既知の問題

問題は見つかりませんでした。

関連 EWIs

既知の問題はありません。

算術演算子

算術演算子の翻訳

換算テーブル

RedshiftSnowflakeComments
+/- (positive and negative sign/operator)+/- Fully supported by Snowflake
^ (exponentiation)POWERFully supported by Snowflake
* (multiplication)*Fully supported by Snowflake
/ (division)/Redshift division between integers always returns integer value, FLOOR function is added to emulate this behavior.
% (modulo)%Fully supported by Snowflake
+ (addition)+ and ||Fully supported by Snowflake. When string are added, it is transformed to a concat.
- (subtraction)-Fully supported by Snowflake
@ (absolute value)ABSFully supported by Snowflake
|/ (square root)SQRTFully supported by Snowflake
||/ (cube root)CBRTFully supported by Snowflake

サンプルソースパターン

足し算、引き算、正および負

入力コード:

 CREATE TABLE test_math_operations (
    base_value DECIMAL(10, 2),
    multiplier INT,
    divisor INT,
    description VARCHAR(100),
    created_at TIMESTAMP,
    category VARCHAR(50)
);


INSERT INTO test_math_operations (base_value, multiplier, divisor, description, created_at, category)
VALUES
(100.50, 2, 5, 'Basic test', '2024-12-01 10:30:00', 'Type A'),
(250.75, 3, 10, 'Complex operations', '2024-12-02 15:45:00', 'Type B'),
(-50.25, 5, 8, 'Negative base value', '2024-12-03 20:00:00', 'Type C'),
(0, 10, 2, 'Zero base value', '2024-12-04 09:15:00', 'Type D');


SELECT +base_value AS positive_value,
       -base_value AS negative_value,
       (base_value + multiplier - divisor) AS add_sub_result,
       created_at + INTERVAL '1 day' AS next_day,
       created_at - INTERVAL '1 hour' AS one_hour_before,
       description + category as string_sum,
       base_value + '5' as int_string_sum,
       '5' + base_value as string_int_sum
FROM test_math_operations;
Copy
positive_valuenegative_valueadd_sub_resultnext_dayone_hour_beforestring_sumint_string_sumstring_int_sum
100.50-100.5097.502024-12-02 10:30:00.0000002024-12-01 09:30:00.000000Basic testType A105.5105.5
250.75-250.75243.752024-12-03 15:45:00.0000002024-12-02 14:45:00.000000Complex operationsType B255.75255.75
-50.2550.25-53.252024-12-04 20:00:00.0000002024-12-03 19:00:00.000000Negative base valueType C-45.25-45.25
0.000.008.002024-12-05 09:15:00.0000002024-12-04 08:15:00.000000Zero base valueType D55

出力コード:

 CREATE TABLE test_math_operations (
    base_value DECIMAL(10, 2),
    multiplier INT,
    divisor INT,
    description VARCHAR(100),
    created_at TIMESTAMP,
    category VARCHAR(50)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "redshift",  "convertedOn": "12/16/2024",  "domain": "test" }}';


INSERT INTO test_math_operations (base_value, multiplier, divisor, description, created_at, category)
VALUES
(100.50, 2, 5, 'Basic test', '2024-12-01 10:30:00', 'Type A'),
(250.75, 3, 10, 'Complex operations', '2024-12-02 15:45:00', 'Type B'),
(-50.25, 5, 8, 'Negative base value', '2024-12-03 20:00:00', 'Type C'),
(0, 10, 2, 'Zero base value', '2024-12-04 09:15:00', 'Type D');


SELECT +base_value AS positive_value,
       -base_value AS negative_value,
       (base_value + multiplier - divisor) AS add_sub_result,
       created_at + INTERVAL '1 day' AS next_day,
       created_at - INTERVAL '1 hour' AS one_hour_before,
       description || category as string_sum,
       base_value + '5' as int_string_sum,
       '5' + base_value as string_int_sum
FROM
       test_math_operations;
Copy
positive_valuenegative_valueadd_sub_resultnext_dayone_hour_beforestring_sumint_string_sumstring_int_sum
100.5-100.597.52024-12-02 10:30:002024-12-01 09:30:00Basic testType A105.5105.5
250.75-250.75243.752024-12-03 15:45:002024-12-02 14:45:00Complex operationsType B255.75255.75
-50.2550.25-53.252024-12-04 20:00:002024-12-03 19:00:00Negative base valueType C-45.25-45.25
0082024-12-05 09:15:002024-12-04 08:15:00Zero base valueType D55
指数、乗算、除算および剰余

入力コード:

 CREATE TABLE test_math_operations (
    base_value DECIMAL(10, 2),
    multiplier INT,
    divisor INT,
    mod_value INT,
    exponent INT
);

INSERT INTO test_math_operations (base_value, multiplier, divisor, mod_value, exponent)
VALUES
(100.50, 2, 5, 3, 2),
(250.75, 3, 10, 7, 3),
(-50.25, 5, 8, 4, 4),
(0, 10, 2, 1, 5);

SELECT
    base_value ^ exponent AS raised_to_exponent,
    (base_value * multiplier) AS multiplied_value,
    (base_value / divisor) AS divided_value,
    base_value::int / divisor as int_division,
    (mod_value % 2) AS modulo_result,
    (base_value + multiplier - divisor) AS add_sub_result,
    (base_value + (multiplier * (divisor - mod_value))) AS controlled_eval
FROM
    test_math_operations;
Copy
raised_to_exponentmultiplied_valuedivided_valueint_divisionmodulo_resultadd_sub_resultcontrolled_eval
10100.2520120.120197.5104.5
15766047.296875752.2525.075251243.75259.75
6375940.62890625-251.25-6.28125-60-53.25-30.25
00001810

出力コード:

 CREATE TABLE test_math_operations (
    base_value DECIMAL(10, 2),
    multiplier INT,
    divisor INT,
    mod_value INT,
    exponent INT
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "redshift",  "convertedOn": "12/10/2024",  "domain": "test" }}';

INSERT INTO test_math_operations (base_value, multiplier, divisor, mod_value, exponent)
VALUES
(100.50, 2, 5, 3, 2),
(250.75, 3, 10, 7, 3),
(-50.25, 5, 8, 4, 4),
(0, 10, 2, 1, 5);

SELECT
    POWER(
    base_value, exponent) AS raised_to_exponent,
    (base_value * multiplier) AS multiplied_value,
    (base_value / divisor) AS divided_value,
    FLOOR(
    base_value::int / divisor) as int_division,
    (mod_value % 2) AS modulo_result,
    (base_value + multiplier - divisor) AS add_sub_result,
    (base_value + (multiplier * (divisor - mod_value))) AS controlled_eval
FROM
    test_math_operations;
Copy
raised_to_exponentmultiplied_valuedivided_valueint_divisionmodulo_resultadd_sub_resultcontrolled_eval
10100.2520120.120197.5104.5
15766047.2969752.2525.075251243.75259.75
6375940.6289-251.25-6.2812-70-53.25-30.25
00001810
絶対値、平方根、立方根

入力コード:

 CREATE TABLE unary_operators
(
    col1 INTEGER,
    col2 INTEGER
);

INSERT INTO unary_operators VALUES
(14, 10),
(-8, 8),
(975, 173),
(-1273, 187);

SELECT
|/ col2 AS square_root,
||/ col1 AS cube_root,
@ col1 AS absolute_value
FROM unary_operators;
Copy
+-------------------+--------------------+--------------+
|square_root        |cube_root           |absolute_value|
+-------------------+--------------------+--------------+
|3.1622776601683795 |2.4101422641752306  |14            |
|2.8284271247461903 |-2                  |8             |
|13.152946437965905 |9.915962413403873   |975           |
|13.674794331177344 |-10.837841647592736 |1273          |
+-------------------+--------------------+--------------+

Copy

出力コード:

 CREATE TABLE unary_operators
(
    col1 INTEGER,
    col2 INTEGER
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "redshift",  "convertedOn": "12/17/2024",  "domain": "test" }}';

INSERT INTO unary_operators
VALUES
(14, 10),
(-8, 8),
(975, 173),
(-1273, 187);

SELECT
    SQRT(col2) AS square_root,
    CBRT(col1) AS cube_root,
    ABS(col1) AS absolute_value
FROM
    unary_operators;
Copy
+-------------+--------------+--------------+
|square_root  |cube_root     |absolute_value|
+-------------+--------------+--------------+
|3.16227766   |2.410142264   |14            |
|2.828427125  |-2            |8             |
|13.152946438 |9.915962413   |975           |
|13.674794331 |-10.837841648 |1273          |
+-------------+--------------+--------------+

Copy

既知の問題

  1. Snowflakeでは単項演算子 + および - を文字列値で使用できますが、Redshiftでは無効です。

関連 EWIs

関連 EWIs はありません。

ビット演算子

ビット演算子の翻訳

換算テーブル

RedshiftSnowflakeComments
& (AND)BITANDFully supported by Snowflake
| (OR)BITORFully supported by Snowflake
<< (Shift Left)BITSHIFTLEFT
>> (Shift Right)BITSHIFTRIGHT
# (XOR)BITXORFully supported by Snowflake
~ (NOT)BITNOTFully supported by Snowflake

サンプルソースパターン

セットアップデータ

Redshift

 CREATE TABLE bitwise_demo (
    col1 INTEGER,
    col2 INTEGER,
    col3 INTEGER,
    col4 VARBYTE(5),
    col5 VARBYTE(7)
);

INSERT INTO bitwise_demo (col1, col2, col3, col4, col5) VALUES
-- Binary: 110, 011, 1111, 0100100001100101011011000110110001101111, 0100100001101001
(6, 3, 15, 'Hello'::VARBYTE, 'Hi'::VARBYTE),
-- Binary: 1010, 0101, 0111, 0100000101000010, 01000011
(10, 5, 7, 'AB'::VARBYTE, 'C'::VARBYTE),   
-- Binary: 11111111, 10000000, 01000000, 010000100111100101100101, 01000111011011110110111101100100010000100111100101100101
(255, 128, 64, 'Bye'::VARBYTE, 'GoodBye'::VARBYTE),
-- Edge case with small numbers and a negative number
(1, 0, -1, 'Hey'::VARBYTE, 'Ya'::VARBYTE);
Copy

Snowflake

 CREATE TABLE bitwise_demo (
    col1 INTEGER,
    col2 INTEGER,
    col3 INTEGER,
    col4 BINARY(5),
    col5 BINARY(7)
);

-- Binary: 110, 011, 1111, 0100100001100101011011000110110001101111, 0100100001101001
INSERT INTO bitwise_demo (col1, col2, col3, col4, col5) SELECT 6, 3, 15, TO_BINARY(HEX_ENCODE('Hello')), TO_BINARY(HEX_ENCODE('Hi'));  
-- Binary: 1010, 0101, 0111, 0100000101000010, 01000011 
INSERT INTO bitwise_demo (col1, col2, col3, col4, col5) SELECT 10, 5, 7, TO_BINARY(HEX_ENCODE('AB')), TO_BINARY(HEX_ENCODE('C'));   
-- Binary: 11111111, 10000000, 01000000, 010000100111100101100101, 01000111011011110110111101100100010000100111100101100101
INSERT INTO bitwise_demo (col1, col2, col3, col4, col5) SELECT 255, 128, 64, TO_BINARY(HEX_ENCODE('Bye')), TO_BINARY(HEX_ENCODE('GoodBye')); 
-- Edge case with small numbers and a negative number
INSERT INTO bitwise_demo (col1, col2, col3, col4, col5) SELECT 1, 0, -1, TO_BINARY(HEX_ENCODE('Hey')), TO_BINARY(HEX_ENCODE('Ya'));
Copy
整数値のビット演算子

入力コード:

 SELECT
    -- Bitwise AND
    col1 & col2 AS bitwise_and,  -- col1 AND col2

    -- Bitwise OR
    col1 | col2 AS bitwise_or,   -- col1 OR col2

    -- Left Shift
    col3 << 1 AS left_shift_col3, -- col3 shifted left by 1

    -- Right Shift
    col3 >> 1 AS right_shift_col3, -- col3 shifted right by 1

    -- XOR
    col1 # col2 AS bitwise_xor, -- col1 XOR col2

    -- NOT
    ~ col3 AS bitwise_not -- NOT col3

FROM bitwise_demo;
Copy
+-------------+------------+-----------------+------------------+-------------+-------------+
| bitwise_and | bitwise_or | left_shift_col3 | right_shift_col3 | bitwise_xor | bitwise_not |
+-------------+------------+-----------------+------------------+-------------+-------------+
|2            |7           |30               |7                 |5            |-16          |
|0            |15          |14               |3                 |15           |-8           |
|128          |255         |128              |32                |127          |-65          |
|0            |1           |-2               |-1                |1            |0            |
+-------------+------------+-----------------+------------------+-------------+-------------+

Copy

出力コード:

 SELECT
        BITAND(
        -- Bitwise AND
        col1, col2) AS bitwise_and,  -- col1 AND col2
        BITOR(

        -- Bitwise OR
        col1, col2) AS bitwise_or,   -- col1 OR col2
        -- Left Shift
        --** SSC-FDM-PG0010 - RESULTS MAY VARY DUE TO THE BEHAVIOR OF SNOWFLAKE'S BITSHIFTLEFT BITWISE FUNCTION **
        BITSHIFTLEFT(
        col3, 1) AS left_shift_col3, -- col3 shifted left by 1
        -- Right Shift
        --** SSC-FDM-PG0010 - RESULTS MAY VARY DUE TO THE BEHAVIOR OF SNOWFLAKE'S BITSHIFTRIGHT BITWISE FUNCTION **
        BITSHIFTRIGHT(
        col3, 1) AS right_shift_col3, -- col3 shifted right by 1
        BITXOR(

        -- XOR
        col1, col2) AS bitwise_xor, -- col1 XOR col2
        -- NOT
        BITNOT(col3) AS bitwise_not -- NOT col3
FROM
        bitwise_demo;
Copy
+-------------+------------+-----------------+------------------+-------------+-------------+
| bitwise_and | bitwise_or | left_shift_col3 | right_shift_col3 | bitwise_xor | bitwise_not |
+-------------+------------+-----------------+------------------+-------------+-------------+
|2            |7           |30               |7                 |5            |-16          |
|0            |15          |14               |3                 |15           |-8           |
|128          |255         |128              |32                |127          |-65          |
|0            |1           |-2               |-1                |1            |0            |
+-------------+------------+-----------------+------------------+-------------+-------------+

Copy
バイナリデータのビット演算子

BITANDBITORBITXOR 関数では、'LEFT' パラメーターが追加され、両方のバイナリ値の長さが異なる場合にパディングを挿入します。これは、Snowflakeで値を比較する際のエラーを回避するために行われます。

Redshift

 SELECT
    -- Bitwise AND
    col4 & col5 AS bitwise_and,  -- col4 AND col5

    -- Bitwise OR
    col4 | col5 AS bitwise_or,   -- col4 OR col5

    -- XOR
    col4 # col5 AS bitwise_xor, -- col4 XOR col5

    -- NOT
    ~ col4 AS bitwise_not -- NOT col4

FROM bitwise_demo;
Copy
+-----------------+-----------------+-----------------+-------------+
| bitwise_and     | bitwise_or      | bitwise_xor     | bitwise_not |
+-----------------+-----------------+-----------------+-------------+
|0x0000004869     |0x48656C6C6F     |0x48656C2406     |0xB79A939390 |
|0x0042           |0x4143           |0x4101           |0xBEBD       |
|0x00000000427965 |0x476F6F64427965 |0x476F6F64000000 |0xBD869A     |
|0x004161         |0x487D79         |0x483C18         |0xB79A86     |
+-----------------+-----------------+-----------------+-------------+

Copy

Snowflake

 SELECT
    BITAND(
    -- Bitwise AND
    col4, col5, 'LEFT') AS bitwise_and,  -- col4 AND col5
    BITOR(

    -- Bitwise OR
    col4, col5, 'LEFT') AS bitwise_or,   -- col4 OR col5

    -- XOR
    BITXOR(col4, col5, 'LEFT') AS bitwise_xor, -- col4 XOR col5

    -- NOT
    BITNOT(col4) AS bitwise_not -- NOT col4
    
    FROM bitwise_demo;
Copy
+---------------+---------------+---------------+-------------+
| bitwise_and   | bitwise_or    | bitwise_xor   | bitwise_not |
+---------------+---------------+---------------+-------------+
|0000004869     |48656C6C6F     |48656C2406     |B79A939390   |
|0042           |4143           |4101           |BEBD         |
|00000000427965 |476F6F64427965 |476F6F64000000 |BD869A       |
|004161         |487D79         |483C18         |B79A86       |
+---------------+---------------+---------------+-------------+

Copy

既知の問題

問題は見つかりませんでした。

関連 EWIs

  • SSC-FDM-PG0010: Snowflakeのビット関数の動作により、結果が異なる場合があります。