- 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:
string
Zu analysierende Zeichenfolge.
Optional:
permissive
Flag, das darüber bestimmt, wie Analysefehler behandelt werden:
Bei Auswahl von
0
führen Analysefehler dazu, dass die Funktion fehlschlägt.Bei Auswahl von
1
wird bei Analysefehlern ein Objekt erzeugt, in dem das Felderror
auf 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" | | } | +----------------------------------------------------------+