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