- Catégories :
PARSE_URL¶
Renvoie une valeur OBJECT composée de tous les éléments (fragment, hôte, paramètres, chemin, port, requête, schéma) dans une URL/URI d’entrée valide.
Syntaxe¶
PARSE_URL(<string>, [<permissive>])
Arguments¶
Obligatoire :
stringChaîne à analyser.
Facultatif :
permissiveDrapeau 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 champerrorest défini sur le message d’erreur correspondant (et aucun autre champ défini).
La valeur par défaut est
0.
Renvoie¶
La fonction renvoie une valeur de type OBJECT.
Si l’un des arguments d’entrée est NULL, la fonction renvoie NULL.
Lorsqu’une valeur OBJECT est renvoyée, elle contient les paires clé-valeur suivantes :
Clé |
Valeur |
|---|---|
|
Ancre qui pointe vers un emplacement. |
|
Domaine (adresse d’un site web ou d’un serveur). |
|
Valeurs transmises au site web ou au serveur. |
|
Emplacement d’une ressource. |
|
Port (point de terminaison de la connexion d’un processus ou d’un service). |
|
Chaîne de requête transmise au site web ou au serveur. |
|
Protocole. |
Exemples¶
Les exemples suivants utilisent la fonction PARSE_URL.
Analyser des URLs dans les données de table¶
Créer une table et insérer des lignes :
CREATE OR REPLACE TABLE parse_url_test (id INT, sample_url VARCHAR);
INSERT INTO parse_url_test VALUES
(1, 'mailto:abc@xyz.com'),
(2, 'https://www.snowflake.com/'),
(3, 'http://USER:PASS@EXAMPLE.INT:4345/HELLO.PHP?USER=1'),
(4, NULL);
SELECT * FROM parse_url_test;
+----+----------------------------------------------------+
| ID | SAMPLE_URL |
|----+----------------------------------------------------|
| 1 | mailto:abc@xyz.com |
| 2 | https://www.snowflake.com/ |
| 3 | http://USER:PASS@EXAMPLE.INT:4345/HELLO.PHP?USER=1 |
| 4 | NULL |
+----+----------------------------------------------------+
La requête suivante montre les résultats de PARSE_URL pour les exemples d’URLs :
SELECT PARSE_URL(sample_url) FROM parse_url_test;
+------------------------------------+
| PARSE_URL(SAMPLE_URL) |
|------------------------------------|
| { |
| "fragment": null, |
| "host": null, |
| "parameters": null, |
| "path": "abc@xyz.com", |
| "port": null, |
| "query": null, |
| "scheme": "mailto" |
| } |
| { |
| "fragment": null, |
| "host": "www.snowflake.com", |
| "parameters": null, |
| "path": "", |
| "port": null, |
| "query": null, |
| "scheme": "https" |
| } |
| { |
| "fragment": null, |
| "host": "USER:PASS@EXAMPLE.INT", |
| "parameters": { |
| "USER": "1" |
| }, |
| "path": "HELLO.PHP", |
| "port": "4345", |
| "query": "USER=1", |
| "scheme": "http" |
| } |
| NULL |
+------------------------------------+
Cette requête montre l’hôte pour chaque exemple d’URL :
SELECT PARSE_URL(sample_url):host FROM parse_url_test;
+----------------------------+
| PARSE_URL(SAMPLE_URL):HOST |
|----------------------------|
| null |
| "www.snowflake.com" |
| "USER:PASS@EXAMPLE.INT" |
| NULL |
+----------------------------+
Renvoyer les lignes où le port est 4345 :
SELECT *
FROM parse_url_test
WHERE PARSE_URL(sample_url):port = '4345';
+----+----------------------------------------------------+
| ID | SAMPLE_URL |
|----+----------------------------------------------------|
| 3 | http://USER:PASS@EXAMPLE.INT:4345/HELLO.PHP?USER=1 |
+----+----------------------------------------------------+
Renvoyer les lignes où l’hôte est www.snowflake.com :
SELECT *
FROM parse_url_test
WHERE PARSE_URL(sample_url):host = 'www.snowflake.com';
+----+----------------------------+
| ID | SAMPLE_URL |
|----+----------------------------|
| 2 | https://www.snowflake.com/ |
+----+----------------------------+
Analyser des URLs non valides¶
Analyser une URL non valide qui manque le schéma. Définissez l’argument permissive sur 0 pour indiquer que la fonction échoue 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 l’argument permissive défini sur 1 pour indiquer que la fonction renvoie une valeur OBJECT contenant le message d’erreur :
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" |
| } |
+----------------------------------------------------------+