🤯

SnowflakeのJSONのnullを扱う時の注意点

2023/06/14に公開

JSON null != SQL NULL

JSONのnullは、Snowflake上で扱う際に、特に型変換を行わずに使うと、NULL_VALUEという型になって、SQLの世界でいう null ではない別の表現になります。

select 
parse_json('{"v": null}') as json,
json['v'],
typeof(json['v']),
json['v'] is null,
json['v']::string is null
JSON JSON['V'] TYPEOF(JSON['V']) JSON['V'] IS NULL JSON['V']::STRING IS NULL
{   "v": null } null NULL_VALUE FALSE TRUE

油断して、json['v'] is null とかをSQLのロジックに使ってしまうと、全て FALSE になってしまうので注意が必要です。
IS_NULL_VALUE を使うか、何かしら型を与えるのが良さそうです。

大した内容ではないですし、ドキュメント読めばわかるのですが、油断してると危ない挙動だったので、記事にしてみました。

Discussion