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>])
Copy

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"                     |
| }                                       |
+-----------------------------------------+
Copy

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"                                              |
| }                                                               |
+-----------------------------------------------------------------+
Copy

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"            |
| }                               |
+---------------------------------+
Copy

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);
Copy
100139 (22000): Error parsing URL: scheme not specified
Copy

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"                        |
| }                                                        |
+----------------------------------------------------------+
Copy