- Kategorien:
Zeichenfolgen- und Binärfunktionen (Allgemein)
PARSE_URL¶
Gibt einen OBJECT-Wert zurück, der aus allen Komponenten (Fragment, Host, Parameter, Pfad, Port, Abfrage, Schema) in einer gültigen Eingabe-URL/URI besteht.
Syntax¶
PARSE_URL(<string>, [<permissive>])
Argumente¶
Benötigt:
stringZu analysierende Zeichenfolge.
Optional:
permissiveFlag, das darüber bestimmt, wie Analysefehler behandelt werden:
Bei Auswahl von
0führen Analysefehler dazu, dass die Funktion fehlschlägt.Bei Auswahl von
1wird bei Analysefehlern ein Objekt erzeugt, in dem das Felderrorauf die entsprechende Fehlermeldung (und keine anderen Felder) gesetzt ist.
Der Standardwert ist
0.
Rückgabewerte¶
Die Funktion gibt einen Wert vom Typ OBJECT zurück.
Wenn eines der Eingabeargumente NULL ist, gibt die Funktion NULL zurück.
Wenn ein OBJECT-Wert zurückgegeben wird, enthält er die folgenden Schlüssel-Wert-Paare:
Schlüssel |
Wert |
|---|---|
|
Anker, der auf einen Speicherort verweist. |
|
Domäne (Adresse einer Website oder eines Servers). |
|
Werte, die an die Website oder den Server übergeben werden. |
|
Speicherort einer Ressource. |
|
Port (Verbindungsendpunkt für einen Prozess oder Dienst). |
|
Abfragezeichenfolge, die an die Website oder den Server übergeben wird. |
|
Das Protokoll. |
Beispiele¶
Die folgenden Beispiele verwenden die Funktion PARSE_URL.
URLs in Tabellendaten analysieren¶
Erstellen Sie eine Tabelle, und fügen Sie Zeilen ein:
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 |
+----+----------------------------------------------------+
Die folgende Abfrage zeigt die Ergebnisse von PARSE_URL für Beispiel-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 |
+------------------------------------+
Diese Abfrage zeigt den Host für jede Beispiel-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 |
+----------------------------+
Gibt die Zeilen zurück, in denen der Port 4345 ist:
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 |
+----+----------------------------------------------------+
Gibt die Zeilen zurück, in denen der Host www.snowflake.com ist:
SELECT *
FROM parse_url_test
WHERE PARSE_URL(sample_url):host = 'www.snowflake.com';
+----+----------------------------+
| ID | SAMPLE_URL |
|----+----------------------------|
| 2 | https://www.snowflake.com/ |
+----+----------------------------+
Ungültige URLs analysieren¶
Analysieren Sie eine ungültige URL, bei der das Schema fehlt. Setzen Sie das Argument permissive auf 0, um anzugeben, dass die Funktion fehlschlägt, wenn die Eingabe ungültig ist:
SELECT PARSE_URL('example.int/hello.php?user=12#nofragment', 0);
100139 (22000): Error parsing URL: scheme not specified
Analysieren Sie eine ungültige URL, wobei das Argument permissive auf 1 gesetzt ist, um anzuzeigen, dass die Funktion einen OBJECT-Wert zurückgibt, der die folgende Fehlermeldung enthält:
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" |
| } |
+----------------------------------------------------------+