| <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">'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">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">'"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="ss">"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">parse_json</span><span class="p">(</span><span class="s1">'13'</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">'{"a":null, "b":"spark"}'</span><span class="p">),</span><span class="w"> </span><span class="ss">"$.c"</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">"a"</span><span class="p">:</span><span class="k">null</span><span class="p">,</span><span class="w"> </span><span class="ss">"b"</span><span class="p">:</span><span class="ss">"spark"</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">'{"a":null, "b":"spark"}'</span><span class="p">),</span><span class="w"> </span><span class="ss">"$.a"</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">"a"</span><span class="p">:</span><span class="k">null</span><span class="p">,</span><span class="w"> </span><span class="ss">"b"</span><span class="p">:</span><span class="ss">"spark"</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">'{"a":1,"b":0.8}'</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">"a"</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="ss">"b"</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">"a"</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="ss">"b"</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">'null'</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">'[{"b":true,"a":0}]'</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">"b"</span><span class="p">:</span><span class="k">true</span><span class="p">,</span><span class="ss">"a"</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"><</span><span class="k">OBJECT</span><span class="o"><</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">'1'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'2'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'3'</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">'{"a": 1}'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'{"b": true}'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="s1">'{"c": 1.23}'</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"><</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">'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="s1">'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="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">"a"</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="ss">"b"</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">'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="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">"a"</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">"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="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">"a"</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">'{"a":1,"b":0.8}'</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">"a"</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="ss">"b"</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">"a"</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="ss">"b"</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">'{"a":1,'</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">"a"</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">'{"a": 1}'</span><span class="p">),</span><span class="w"> </span><span class="s1">'$.a'</span><span class="p">,</span><span class="w"> </span><span class="s1">'int'</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">"a"</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">'{"a": 1}'</span><span class="p">),</span><span class="w"> </span><span class="s1">'$.b'</span><span class="p">,</span><span class="w"> </span><span class="s1">'int'</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">"a"</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">'[1, "2"]'</span><span class="p">),</span><span class="w"> </span><span class="s1">'$[1]'</span><span class="p">,</span><span class="w"> </span><span class="s1">'string'</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">"2"</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">'[1, "2"]'</span><span class="p">),</span><span class="w"> </span><span class="s1">'$[2]'</span><span class="p">,</span><span class="w"> </span><span class="s1">'string'</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">"2"</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">'[1, "hello"]'</span><span class="p">),</span><span class="w"> </span><span class="s1">'$[1]'</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">"hello"</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">"hello"</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">'[1, "hello"]'</span><span class="p">),</span><span class="w"> </span><span class="s1">'$[1]'</span><span class="p">,</span><span class="w"> </span><span class="s1">'int'</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">"hello"</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">'["hello", "world"]'</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">"hello"</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">"world"</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">=></span><span class="w"> </span><span class="n">parse_json</span><span class="p">(</span><span class="s1">'{"a": true, "b": 3.14}'</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">'["hello", "world"]'</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">"hello"</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">"world"</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">=></span><span class="w"> </span><span class="n">parse_json</span><span class="p">(</span><span class="s1">'{"a": true, "b": 3.14}'</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">'{"a": 1}'</span><span class="p">),</span><span class="w"> </span><span class="s1">'$.a'</span><span class="p">,</span><span class="w"> </span><span class="s1">'int'</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">"a"</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">'{"a": 1}'</span><span class="p">),</span><span class="w"> </span><span class="s1">'$.b'</span><span class="p">,</span><span class="w"> </span><span class="s1">'int'</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">"a"</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">'[1, "2"]'</span><span class="p">),</span><span class="w"> </span><span class="s1">'$[1]'</span><span class="p">,</span><span class="w"> </span><span class="s1">'string'</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">"2"</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">'[1, "2"]'</span><span class="p">),</span><span class="w"> </span><span class="s1">'$[2]'</span><span class="p">,</span><span class="w"> </span><span class="s1">'string'</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">"2"</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">'[1, "hello"]'</span><span class="p">),</span><span class="w"> </span><span class="s1">'$[1]'</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">"hello"</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">"hello"</span><span class="o">|</span> |
| <span class="o">+</span><span class="c1">-------------------------------------------+</span> |
| </code></pre></div> |