- 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 :
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 champerror
est 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" |
| } |
+----------------------------------------------------------+