Kategorien:

Zeichenfolgen- und Binärfunktionen (Allgemein)

PARSE_URL

Gibt ein JSON-Objekt zurück, das aus allen Komponenten (Fragment, Host, Pfad, Port, Abfrage, Schema) in einer gültigen Eingabe URL/URIbesteht.

Syntax

PARSE_URL(<string>, [<permissive>])
Copy

Argumente

Benötigt:

string

Zu analysierende Zeichenfolge.

Optional:

permissive

Flag, das darüber bestimmt, wie Analysefehler behandelt werden:

  • Bei Auswahl von 0 führen Fehler bei der Analyse dazu, dass die Funktion fehlschlägt.

  • Bei Auswahl von 1 wird bei Analysefehlern ein Objekt erzeugt, in dem das Feld error auf die entsprechende Fehlermeldung (und keine anderen Felder) gesetzt ist.

Der Standardwert ist 0.

Rückgabewerte

Der Datentyp des zurückgegebenen Werts ist OBJECT. Das Objekt enthält JSON.

Beispiele

Analysieren Sie eine einfache URL:

SELECT PARSE_URL('https://www.snowflake.com/');
+-----------------------------------------+
| PARSE_URL('HTTPS://WWW.SNOWFLAKE.COM/') |
|-----------------------------------------|
| {                                       |
|   "fragment": null,                     |
|   "host": "www.snowflake.com",          |
|   "parameters": null,                   |
|   "path": "",                           |
|   "port": null,                         |
|   "query": null,                        |
|   "scheme": "https"                     |
| }                                       |
+-----------------------------------------+
Copy

Analysieren Sie eine URL, die einen Pfad und eine Portnummer enthält:

SELECT PARSE_URL('HTTP://USER:PASS@EXAMPLE.INT:4345/HELLO.PHP?USER=1');
+-----------------------------------------------------------------+
| PARSE_URL('HTTP://USER:PASS@EXAMPLE.INT:4345/HELLO.PHP?USER=1') |
|-----------------------------------------------------------------|
| {                                                               |
|   "fragment": null,                                             |
|   "host": "USER:PASS@EXAMPLE.INT",                              |
|   "parameters": {                                               |
|     "USER": "1"                                                 |
|   },                                                            |
|   "path": "HELLO.PHP",                                          |
|   "port": "4345",                                               |
|   "query": "USER=1",                                            |
|   "scheme": "HTTP"                                              |
| }                                                               |
+-----------------------------------------------------------------+
Copy

Analysieren Sie eine E-Mail-URL:

SELECT PARSE_URL('mailto:abc@xyz.com');
+---------------------------------+
| PARSE_URL('MAILTO:ABC@XYZ.COM') |
|---------------------------------|
| {                               |
|   "fragment": null,             |
|   "host": null,                 |
|   "parameters": null,           |
|   "path": "abc@xyz.com",        |
|   "port": null,                 |
|   "query": null,                |
|   "scheme": "mailto"            |
| }                               |
+---------------------------------+
Copy

Analysieren Sie eine ungültige URL, bei der das Schema fehlt. Setzen Sie den permissive Parameter auf 0, um anzuzeigen, dass die Funktion fehlschlagen soll, wenn die Eingabe ungültig ist:

SELECT PARSE_URL('example.int/hello.php?user=12#nofragment', 0);
Copy
100139 (22000): Error parsing URL: scheme not specified
Copy

Analysieren Sie eine ungültige URL, wobei der permissive Parameter auf 1 gesetzt ist, um anzugeben, dass die Funktion ein Objekt zurückgeben soll, das die Fehlermeldung im JSON-Format 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"                        |
| }                                                        |
+----------------------------------------------------------+
Copy