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>])

Argumente

Benötigt:

Zeichenfolge

Zu analysierende Zeichenfolge.

Optional:

Permissiv

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

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

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

Analysieren Sie eine ungültige URL, bei der das Schema fehlt. Setzen Sie den permissiven 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);
100139 (22000): Error parsing URL: scheme not specified

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