blob: fb8e48858771c19ac5209193db3ef6016794b657 [file] [log] [blame]
<div class="codehilite"><pre><span></span><code><span class="c1">-- is_variant_null</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">is_variant_null</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="s1">&#39;null&#39;</span><span class="p">));</span>
<span class="o">+</span><span class="c1">---------------------------------+</span>
<span class="o">|</span><span class="n">is_variant_null</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="k">null</span><span class="p">))</span><span class="o">|</span>
<span class="o">+</span><span class="c1">---------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
<span class="o">+</span><span class="c1">---------------------------------+</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">is_variant_null</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="s1">&#39;&quot;null&quot;&#39;</span><span class="p">));</span>
<span class="o">+</span><span class="c1">-----------------------------------+</span>
<span class="o">|</span><span class="n">is_variant_null</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="ss">&quot;null&quot;</span><span class="p">))</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-----------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-----------------------------------+</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">is_variant_null</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="s1">&#39;13&#39;</span><span class="p">));</span>
<span class="o">+</span><span class="c1">-------------------------------+</span>
<span class="o">|</span><span class="n">is_variant_null</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="mi">13</span><span class="p">))</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-------------------------------+</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">is_variant_null</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="k">null</span><span class="p">));</span>
<span class="o">+</span><span class="c1">---------------------------------+</span>
<span class="o">|</span><span class="n">is_variant_null</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="k">NULL</span><span class="p">))</span><span class="o">|</span>
<span class="o">+</span><span class="c1">---------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
<span class="o">+</span><span class="c1">---------------------------------+</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">is_variant_null</span><span class="p">(</span><span class="n">variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="s1">&#39;{&quot;a&quot;:null, &quot;b&quot;:&quot;spark&quot;}&#39;</span><span class="p">),</span><span class="w"> </span><span class="ss">&quot;$.c&quot;</span><span class="p">));</span>
<span class="o">+</span><span class="c1">----------------------------------------------------------------------+</span>
<span class="o">|</span><span class="n">is_variant_null</span><span class="p">(</span><span class="n">variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="err">{</span><span class="ss">&quot;a&quot;</span><span class="p">:</span><span class="k">null</span><span class="p">,</span><span class="w"> </span><span class="ss">&quot;b&quot;</span><span class="p">:</span><span class="ss">&quot;spark&quot;</span><span class="err">}</span><span class="p">),</span><span class="w"> </span><span class="err">$</span><span class="p">.</span><span class="k">c</span><span class="p">))</span><span class="o">|</span>
<span class="o">+</span><span class="c1">----------------------------------------------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="k">false</span><span class="o">|</span>
<span class="o">+</span><span class="c1">----------------------------------------------------------------------+</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">is_variant_null</span><span class="p">(</span><span class="n">variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="s1">&#39;{&quot;a&quot;:null, &quot;b&quot;:&quot;spark&quot;}&#39;</span><span class="p">),</span><span class="w"> </span><span class="ss">&quot;$.a&quot;</span><span class="p">));</span>
<span class="o">+</span><span class="c1">----------------------------------------------------------------------+</span>
<span class="o">|</span><span class="n">is_variant_null</span><span class="p">(</span><span class="n">variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="err">{</span><span class="ss">&quot;a&quot;</span><span class="p">:</span><span class="k">null</span><span class="p">,</span><span class="w"> </span><span class="ss">&quot;b&quot;</span><span class="p">:</span><span class="ss">&quot;spark&quot;</span><span class="err">}</span><span class="p">),</span><span class="w"> </span><span class="err">$</span><span class="p">.</span><span class="n">a</span><span class="p">))</span><span class="o">|</span>
<span class="o">+</span><span class="c1">----------------------------------------------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
<span class="o">+</span><span class="c1">----------------------------------------------------------------------+</span>
<span class="c1">-- parse_json</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">parse_json</span><span class="p">(</span><span class="s1">&#39;{&quot;a&quot;:1,&quot;b&quot;:0.8}&#39;</span><span class="p">);</span>
<span class="o">+</span><span class="c1">---------------------------+</span>
<span class="o">|</span><span class="n">parse_json</span><span class="p">(</span><span class="err">{</span><span class="ss">&quot;a&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="ss">&quot;b&quot;</span><span class="p">:</span><span class="mi">0</span><span class="p">.</span><span class="mi">8</span><span class="err">}</span><span class="p">)</span><span class="o">|</span>
<span class="o">+</span><span class="c1">---------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="ss">&quot;a&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="ss">&quot;b&quot;</span><span class="p">:</span><span class="mi">0</span><span class="p">.</span><span class="mi">8</span><span class="err">}</span><span class="o">|</span>
<span class="o">+</span><span class="c1">---------------------------+</span>
<span class="c1">-- schema_of_variant</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">schema_of_variant</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="s1">&#39;null&#39;</span><span class="p">));</span>
<span class="o">+</span><span class="c1">-----------------------------------+</span>
<span class="o">|</span><span class="n">schema_of_variant</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="k">null</span><span class="p">))</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-----------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="n">VOID</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-----------------------------------+</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">schema_of_variant</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="s1">&#39;[{&quot;b&quot;:true,&quot;a&quot;:0}]&#39;</span><span class="p">));</span>
<span class="o">+</span><span class="c1">-------------------------------------------------+</span>
<span class="o">|</span><span class="n">schema_of_variant</span><span class="p">(</span><span class="n">parse_json</span><span class="p">([</span><span class="err">{</span><span class="ss">&quot;b&quot;</span><span class="p">:</span><span class="k">true</span><span class="p">,</span><span class="ss">&quot;a&quot;</span><span class="p">:</span><span class="mi">0</span><span class="err">}</span><span class="p">]))</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-------------------------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="nb">ARRAY</span><span class="o">&lt;</span><span class="k">OBJECT</span><span class="o">&lt;</span><span class="n">a</span><span class="p">:</span><span class="w"> </span><span class="n">B</span><span class="p">...</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-------------------------------------------------+</span>
<span class="c1">-- schema_of_variant_agg</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">schema_of_variant_agg</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="n">j</span><span class="p">))</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;1&#39;</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;2&#39;</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;3&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">j</span><span class="p">);</span>
<span class="o">+</span><span class="c1">------------------------------------+</span>
<span class="o">|</span><span class="n">schema_of_variant_agg</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="n">j</span><span class="p">))</span><span class="o">|</span>
<span class="o">+</span><span class="c1">------------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="nb">BIGINT</span><span class="o">|</span>
<span class="o">+</span><span class="c1">------------------------------------+</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">schema_of_variant_agg</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="n">j</span><span class="p">))</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;{&quot;a&quot;: 1}&#39;</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;{&quot;b&quot;: true}&#39;</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">&#39;{&quot;c&quot;: 1.23}&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">tab</span><span class="p">(</span><span class="n">j</span><span class="p">);</span>
<span class="o">+</span><span class="c1">------------------------------------+</span>
<span class="o">|</span><span class="n">schema_of_variant_agg</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="n">j</span><span class="p">))</span><span class="o">|</span>
<span class="o">+</span><span class="c1">------------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="k">OBJECT</span><span class="o">&lt;</span><span class="n">a</span><span class="p">:</span><span class="w"> </span><span class="nb">BIGINT</span><span class="p">,...</span><span class="o">|</span>
<span class="o">+</span><span class="c1">------------------------------------+</span>
<span class="c1">-- to_variant_object</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">to_variant_object</span><span class="p">(</span><span class="n">named_struct</span><span class="p">(</span><span class="s1">&#39;a&#39;</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;b&#39;</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">));</span>
<span class="o">+</span><span class="c1">-------------------------------------------+</span>
<span class="o">|</span><span class="n">to_variant_object</span><span class="p">(</span><span class="n">named_struct</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">))</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-------------------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="ss">&quot;a&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="ss">&quot;b&quot;</span><span class="p">:</span><span class="mi">2</span><span class="err">}</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-------------------------------------------+</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">to_variant_object</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">));</span>
<span class="o">+</span><span class="c1">---------------------------------+</span>
<span class="o">|</span><span class="n">to_variant_object</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">))</span><span class="o">|</span>
<span class="o">+</span><span class="c1">---------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">]</span><span class="o">|</span>
<span class="o">+</span><span class="c1">---------------------------------+</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">to_variant_object</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="n">named_struct</span><span class="p">(</span><span class="s1">&#39;a&#39;</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)));</span>
<span class="o">+</span><span class="c1">--------------------------------------------+</span>
<span class="o">|</span><span class="n">to_variant_object</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="n">named_struct</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)))</span><span class="o">|</span>
<span class="o">+</span><span class="c1">--------------------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="err">{</span><span class="ss">&quot;a&quot;</span><span class="p">:</span><span class="mi">1</span><span class="err">}</span><span class="p">]</span><span class="o">|</span>
<span class="o">+</span><span class="c1">--------------------------------------------+</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">to_variant_object</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="k">map</span><span class="p">(</span><span class="ss">&quot;a&quot;</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)));</span>
<span class="o">+</span><span class="c1">-----------------------------------+</span>
<span class="o">|</span><span class="n">to_variant_object</span><span class="p">(</span><span class="nb">array</span><span class="p">(</span><span class="k">map</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)))</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-----------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="err">{</span><span class="ss">&quot;a&quot;</span><span class="p">:</span><span class="mi">2</span><span class="err">}</span><span class="p">]</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-----------------------------------+</span>
<span class="c1">-- try_parse_json</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">try_parse_json</span><span class="p">(</span><span class="s1">&#39;{&quot;a&quot;:1,&quot;b&quot;:0.8}&#39;</span><span class="p">);</span>
<span class="o">+</span><span class="c1">-------------------------------+</span>
<span class="o">|</span><span class="n">try_parse_json</span><span class="p">(</span><span class="err">{</span><span class="ss">&quot;a&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="ss">&quot;b&quot;</span><span class="p">:</span><span class="mi">0</span><span class="p">.</span><span class="mi">8</span><span class="err">}</span><span class="p">)</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="ss">&quot;a&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="ss">&quot;b&quot;</span><span class="p">:</span><span class="mi">0</span><span class="p">.</span><span class="mi">8</span><span class="err">}</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-------------------------------+</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">try_parse_json</span><span class="p">(</span><span class="s1">&#39;{&quot;a&quot;:1,&#39;</span><span class="p">);</span>
<span class="o">+</span><span class="c1">-----------------------+</span>
<span class="o">|</span><span class="n">try_parse_json</span><span class="p">(</span><span class="err">{</span><span class="ss">&quot;a&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,)</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-----------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-----------------------+</span>
<span class="c1">-- try_variant_get</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">try_variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="s1">&#39;{&quot;a&quot;: 1}&#39;</span><span class="p">),</span><span class="w"> </span><span class="s1">&#39;$.a&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;int&#39;</span><span class="p">);</span>
<span class="o">+</span><span class="c1">------------------------------------------+</span>
<span class="o">|</span><span class="n">try_variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="err">{</span><span class="ss">&quot;a&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="err">}</span><span class="p">),</span><span class="w"> </span><span class="err">$</span><span class="p">.</span><span class="n">a</span><span class="p">)</span><span class="o">|</span>
<span class="o">+</span><span class="c1">------------------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
<span class="o">+</span><span class="c1">------------------------------------------+</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">try_variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="s1">&#39;{&quot;a&quot;: 1}&#39;</span><span class="p">),</span><span class="w"> </span><span class="s1">&#39;$.b&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;int&#39;</span><span class="p">);</span>
<span class="o">+</span><span class="c1">------------------------------------------+</span>
<span class="o">|</span><span class="n">try_variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="err">{</span><span class="ss">&quot;a&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="err">}</span><span class="p">),</span><span class="w"> </span><span class="err">$</span><span class="p">.</span><span class="n">b</span><span class="p">)</span><span class="o">|</span>
<span class="o">+</span><span class="c1">------------------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
<span class="o">+</span><span class="c1">------------------------------------------+</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">try_variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="s1">&#39;[1, &quot;2&quot;]&#39;</span><span class="p">),</span><span class="w"> </span><span class="s1">&#39;$[1]&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;string&#39;</span><span class="p">);</span>
<span class="o">+</span><span class="c1">-------------------------------------------+</span>
<span class="o">|</span><span class="n">try_variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="ss">&quot;2&quot;</span><span class="p">]),</span><span class="w"> </span><span class="err">$</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-------------------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-------------------------------------------+</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">try_variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="s1">&#39;[1, &quot;2&quot;]&#39;</span><span class="p">),</span><span class="w"> </span><span class="s1">&#39;$[2]&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;string&#39;</span><span class="p">);</span>
<span class="o">+</span><span class="c1">-------------------------------------------+</span>
<span class="o">|</span><span class="n">try_variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="ss">&quot;2&quot;</span><span class="p">]),</span><span class="w"> </span><span class="err">$</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-------------------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-------------------------------------------+</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">try_variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="s1">&#39;[1, &quot;hello&quot;]&#39;</span><span class="p">),</span><span class="w"> </span><span class="s1">&#39;$[1]&#39;</span><span class="p">);</span>
<span class="o">+</span><span class="c1">-----------------------------------------------+</span>
<span class="o">|</span><span class="n">try_variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="ss">&quot;hello&quot;</span><span class="p">]),</span><span class="w"> </span><span class="err">$</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-----------------------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="ss">&quot;hello&quot;</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-----------------------------------------------+</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">try_variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="s1">&#39;[1, &quot;hello&quot;]&#39;</span><span class="p">),</span><span class="w"> </span><span class="s1">&#39;$[1]&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;int&#39;</span><span class="p">);</span>
<span class="o">+</span><span class="c1">-----------------------------------------------+</span>
<span class="o">|</span><span class="n">try_variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="ss">&quot;hello&quot;</span><span class="p">]),</span><span class="w"> </span><span class="err">$</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-----------------------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-----------------------------------------------+</span>
<span class="c1">-- variant_explode</span>
<span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">variant_explode</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="s1">&#39;[&quot;hello&quot;, &quot;world&quot;]&#39;</span><span class="p">));</span>
<span class="o">+</span><span class="c1">---+----+-------+</span>
<span class="o">|</span><span class="n">pos</span><span class="o">|</span><span class="w"> </span><span class="k">key</span><span class="o">|</span><span class="w"> </span><span class="n">value</span><span class="o">|</span>
<span class="o">+</span><span class="c1">---+----+-------+</span>
<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span><span class="k">NULL</span><span class="o">|</span><span class="ss">&quot;hello&quot;</span><span class="o">|</span>
<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="k">NULL</span><span class="o">|</span><span class="ss">&quot;world&quot;</span><span class="o">|</span>
<span class="o">+</span><span class="c1">---+----+-------+</span>
<span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">variant_explode</span><span class="p">(</span><span class="k">input</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="n">parse_json</span><span class="p">(</span><span class="s1">&#39;{&quot;a&quot;: true, &quot;b&quot;: 3.14}&#39;</span><span class="p">));</span>
<span class="o">+</span><span class="c1">---+---+-----+</span>
<span class="o">|</span><span class="n">pos</span><span class="o">|</span><span class="k">key</span><span class="o">|</span><span class="n">value</span><span class="o">|</span>
<span class="o">+</span><span class="c1">---+---+-----+</span>
<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span><span class="w"> </span><span class="n">a</span><span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="n">b</span><span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="p">.</span><span class="mi">14</span><span class="o">|</span>
<span class="o">+</span><span class="c1">---+---+-----+</span>
<span class="c1">-- variant_explode_outer</span>
<span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">variant_explode_outer</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="s1">&#39;[&quot;hello&quot;, &quot;world&quot;]&#39;</span><span class="p">));</span>
<span class="o">+</span><span class="c1">---+----+-------+</span>
<span class="o">|</span><span class="n">pos</span><span class="o">|</span><span class="w"> </span><span class="k">key</span><span class="o">|</span><span class="w"> </span><span class="n">value</span><span class="o">|</span>
<span class="o">+</span><span class="c1">---+----+-------+</span>
<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span><span class="k">NULL</span><span class="o">|</span><span class="ss">&quot;hello&quot;</span><span class="o">|</span>
<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="k">NULL</span><span class="o">|</span><span class="ss">&quot;world&quot;</span><span class="o">|</span>
<span class="o">+</span><span class="c1">---+----+-------+</span>
<span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">variant_explode_outer</span><span class="p">(</span><span class="k">input</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="n">parse_json</span><span class="p">(</span><span class="s1">&#39;{&quot;a&quot;: true, &quot;b&quot;: 3.14}&#39;</span><span class="p">));</span>
<span class="o">+</span><span class="c1">---+---+-----+</span>
<span class="o">|</span><span class="n">pos</span><span class="o">|</span><span class="k">key</span><span class="o">|</span><span class="n">value</span><span class="o">|</span>
<span class="o">+</span><span class="c1">---+---+-----+</span>
<span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="o">|</span><span class="w"> </span><span class="n">a</span><span class="o">|</span><span class="w"> </span><span class="k">true</span><span class="o">|</span>
<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span><span class="w"> </span><span class="n">b</span><span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="p">.</span><span class="mi">14</span><span class="o">|</span>
<span class="o">+</span><span class="c1">---+---+-----+</span>
<span class="c1">-- variant_get</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="s1">&#39;{&quot;a&quot;: 1}&#39;</span><span class="p">),</span><span class="w"> </span><span class="s1">&#39;$.a&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;int&#39;</span><span class="p">);</span>
<span class="o">+</span><span class="c1">--------------------------------------+</span>
<span class="o">|</span><span class="n">variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="err">{</span><span class="ss">&quot;a&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="err">}</span><span class="p">),</span><span class="w"> </span><span class="err">$</span><span class="p">.</span><span class="n">a</span><span class="p">)</span><span class="o">|</span>
<span class="o">+</span><span class="c1">--------------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="o">|</span>
<span class="o">+</span><span class="c1">--------------------------------------+</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="s1">&#39;{&quot;a&quot;: 1}&#39;</span><span class="p">),</span><span class="w"> </span><span class="s1">&#39;$.b&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;int&#39;</span><span class="p">);</span>
<span class="o">+</span><span class="c1">--------------------------------------+</span>
<span class="o">|</span><span class="n">variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="err">{</span><span class="ss">&quot;a&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="err">}</span><span class="p">),</span><span class="w"> </span><span class="err">$</span><span class="p">.</span><span class="n">b</span><span class="p">)</span><span class="o">|</span>
<span class="o">+</span><span class="c1">--------------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
<span class="o">+</span><span class="c1">--------------------------------------+</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="s1">&#39;[1, &quot;2&quot;]&#39;</span><span class="p">),</span><span class="w"> </span><span class="s1">&#39;$[1]&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;string&#39;</span><span class="p">);</span>
<span class="o">+</span><span class="c1">---------------------------------------+</span>
<span class="o">|</span><span class="n">variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="ss">&quot;2&quot;</span><span class="p">]),</span><span class="w"> </span><span class="err">$</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="o">|</span>
<span class="o">+</span><span class="c1">---------------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="o">|</span>
<span class="o">+</span><span class="c1">---------------------------------------+</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="s1">&#39;[1, &quot;2&quot;]&#39;</span><span class="p">),</span><span class="w"> </span><span class="s1">&#39;$[2]&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;string&#39;</span><span class="p">);</span>
<span class="o">+</span><span class="c1">---------------------------------------+</span>
<span class="o">|</span><span class="n">variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="ss">&quot;2&quot;</span><span class="p">]),</span><span class="w"> </span><span class="err">$</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">|</span>
<span class="o">+</span><span class="c1">---------------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="k">NULL</span><span class="o">|</span>
<span class="o">+</span><span class="c1">---------------------------------------+</span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">(</span><span class="s1">&#39;[1, &quot;hello&quot;]&#39;</span><span class="p">),</span><span class="w"> </span><span class="s1">&#39;$[1]&#39;</span><span class="p">);</span>
<span class="o">+</span><span class="c1">-------------------------------------------+</span>
<span class="o">|</span><span class="n">variant_get</span><span class="p">(</span><span class="n">parse_json</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="ss">&quot;hello&quot;</span><span class="p">]),</span><span class="w"> </span><span class="err">$</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-------------------------------------------+</span>
<span class="o">|</span><span class="w"> </span><span class="ss">&quot;hello&quot;</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-------------------------------------------+</span>
</code></pre></div>