🤯
SnowflakeのJSONのnullを扱う時の注意点
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