はじめに
最近SnowflakeでNullと空文字を扱う機会があり、少し想定と違う挙動があったので備忘録がてら記事に残しておきます。
SnowflakeにNullと空文字を入れる
下記クエリを実行し、データベースへの格納データを見てみます。
USE ROLE ACCOUNTADMIN;
USE WAREHOUSE COMPUTE_WH;
CREATE OR REPLACE TABLE TEST.TEST.TEST (
STR_NULL STRING,
STR_QUOTE STRING
);
INSERT INTO TEST.TEST.TEST
SELECT
NULL AS STR_NULL,
'' AS STR_QUOTE;
SELECT
*
FROM
TEST.TEST.TEST;
- Null:nullと表示される
- 空文字: 何も表示されない
詳しく見てみる
いくつかの観点で詳しく見てみましょう。
SELECTで抽出する
同じ画面でSTR_QUOTE
をクリックすると、右側にNo value
と表示されます。ほう!?!?
カウントしてみる
続いてカウント関数を利用してみます。
SELECT
COUNT(STR_NULL) AS STR_NULL_COUNT,
COUNT(STR_QUOTE) AS STR_QUOTE_COUNT
FROM
TEST.TEST.TEST;
Nullではないのでカウントできます。
ダウンロードしてみる
ダウンロードしたCSVをエディタで開くと、次のようになっています。
STR_NULL,STR_QUOTE
,
NullとNo valueは判別がつかなくなりました。
STRING以外で試してみる
今度はINTEGERで試してみます。これはさすがにエラーで落ちます。Numeric value '' is not recognized
さいごに
今回初めて知って、!?!?となったものでしたが、あまり気付かずにハマりかねないと思い記事にしておきました。みなさんもお気をつけください。