5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SnowflakeにおけるNullと空文字の扱い

Posted at

はじめに

最近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と表示される
  • 空文字: 何も表示されない

image.png

詳しく見てみる

いくつかの観点で詳しく見てみましょう。

SELECTで抽出する

同じ画面でSTR_QUOTEをクリックすると、右側にNo valueと表示されます。ほう!?!?

image.png

カウントしてみる

続いてカウント関数を利用してみます。

SELECT
  COUNT(STR_NULL) AS STR_NULL_COUNT,
  COUNT(STR_QUOTE) AS STR_QUOTE_COUNT
FROM
  TEST.TEST.TEST;

Nullではないのでカウントできます。

image.png

ダウンロードしてみる

出力結果をダウンロードします。
image.png

ダウンロードしたCSVをエディタで開くと、次のようになっています。

STR_NULL,STR_QUOTE
,

NullとNo valueは判別がつかなくなりました。

STRING以外で試してみる

今度はINTEGERで試してみます。これはさすがにエラーで落ちます。Numeric value '' is not recognized

image.png

さいごに

今回初めて知って、!?!?となったものでしたが、あまり気付かずにハマりかねないと思い記事にしておきました。みなさんもお気をつけください。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?