Catégories :

Fonctions de chaîne et fonctions binaires (Général)

PARSE_URL

Retourne un objet JSON composé de tous les composants (fragment, hôte, chemin, port, requête, schéma) dans une entrée URL/URI valide.

Syntaxe

PARSE_URL(<string>, [<permissive>])

Arguments

Obligatoire :

string

Chaîne à analyser.

Facultatif :

permissive

Drapeau déterminant comment les erreurs d’analyse sont traitées :

  • Si la valeur est définie sur 0, les erreurs d’analyse entraînent l’échec de la fonction.

  • Si la valeur est définie sur 1, les erreurs d’analyse génèrent un objet dont le champ error est défini sur le message d’erreur correspondant (et aucun autre champ défini).

La valeur par défaut est 0.

Renvoie

Le type de données de la valeur renvoyée est OBJECT. L’objet contient JSON.

Exemples

Analyser une URL simple :

SELECT PARSE_URL('https://www.snowflake.com/');
+-----------------------------------------+
| PARSE_URL('HTTPS://WWW.SNOWFLAKE.COM/') |
|-----------------------------------------|
| {                                       |
|   "fragment": null,                     |
|   "host": "www.snowflake.com",          |
|   "parameters": null,                   |
|   "path": "",                           |
|   "port": null,                         |
|   "query": null,                        |
|   "scheme": "https"                     |
| }                                       |
+-----------------------------------------+

Analyser une URL comprenant un chemin d’accès et un numéro de port :

SELECT PARSE_URL('HTTP://USER:PASS@EXAMPLE.INT:4345/HELLO.PHP?USER=1');
+-----------------------------------------------------------------+
| PARSE_URL('HTTP://USER:PASS@EXAMPLE.INT:4345/HELLO.PHP?USER=1') |
|-----------------------------------------------------------------|
| {                                                               |
|   "fragment": null,                                             |
|   "host": "USER:PASS@EXAMPLE.INT",                              |
|   "parameters": {                                               |
|     "USER": "1"                                                 |
|   },                                                            |
|   "path": "HELLO.PHP",                                          |
|   "port": "4345",                                               |
|   "query": "USER=1",                                            |
|   "scheme": "HTTP"                                              |
| }                                                               |
+-----------------------------------------------------------------+

Analyser une URL d’email :

SELECT PARSE_URL('mailto:abc@xyz.com');
+---------------------------------+
| PARSE_URL('MAILTO:ABC@XYZ.COM') |
|---------------------------------|
| {                               |
|   "fragment": null,             |
|   "host": null,                 |
|   "parameters": null,           |
|   "path": "abc@xyz.com",        |
|   "port": null,                 |
|   "query": null,                |
|   "scheme": "mailto"            |
| }                               |
+---------------------------------+

Analyser une URL non valide qui manque le schéma. Définissez le paramètre permissive sur 0 pour indiquer que la fonction doit échouer si l’entrée n’est pas valide :

SELECT PARSE_URL('example.int/hello.php?user=12#nofragment', 0);
100139 (22000): Error parsing URL: scheme not specified

Analyser une URL non valide, avec le paramètre permissive défini sur 1 pour indiquer que la fonction doit renvoyer un objet contenant le message d’erreur au format JSON :

SELECT PARSE_URL('example.int/hello.php?user=12#nofragment', 1);
+----------------------------------------------------------+
| PARSE_URL('EXAMPLE.INT/HELLO.PHP?USER=12#NOFRAGMENT', 1) |
|----------------------------------------------------------|
| {                                                        |
|   "error": "scheme not specified"                        |
| }                                                        |
+----------------------------------------------------------+