Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

NET-Funktionen

NET.IP_FROM_STRING

NET.IP_FROM_STRING(addr_str)

Beschreibung

Wandelt eine IPv4- oder IPv6-Adresse vom Textformat (STRING) in das Binärformat (BYTES) in Netzwerk-Byte-Reihenfolge um.

Diese Funktion unterstützt die folgenden Formate für addr_str:

  • IPv4: Dotted-Quad-Format (vier durch Punkte voneinander getrennte Zahlen). z. B. 10.1.2.3
  • IPv6: durch Doppelpunkte getrenntes Format. Beispiel: 1234:5678:90ab:cdef:1234:5678:90ab:cdef Weitere Beispiele finden Sie in der Beschreibung der Adressierungsarchitektur von IP-Version 6.

Diese Funktion unterstützt keine CIDR-Notation wie 10.1.2.3/32.

Wenn diese Funktion eine NULL-Eingabe empfängt, gibt sie NULL zurück. Wenn die Eingabe als ungültig erachtet wird, tritt ein OUT_OF_RANGE-Fehler auf.

Rückgabedatentyp

BYTES

Beispiel

SELECT
  addr_str, FORMAT("%T", NET.IP_FROM_STRING(addr_str)) AS ip_from_string
FROM UNNEST([
  '48.49.50.51',
  '::1',
  '3031:3233:3435:3637:3839:4041:4243:4445',
  '::ffff:192.0.2.128'
]) AS addr_str;
addr_str ip_from_string
48.49.50.51 b"0123"
::1 b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01"
3031:3233:3435:3637:3839:4041:4243:4445 b"0123456789@ABCDE"
::ffff:192.0.2.128 b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xc0\x00\x02\x80"

NET.SAFE_IP_FROM_STRING

NET.SAFE_IP_FROM_STRING(addr_str)

Beschreibung

Ähnlich wie NET.IP_FROM_STRING, gibt aber NULL zurück, statt bei ungültiger Eingabe einen Fehler auszugeben.

Rückgabedatentyp

BYTES

Beispiel

SELECT
  addr_str,
  FORMAT("%T", NET.SAFE_IP_FROM_STRING(addr_str)) AS safe_ip_from_string
FROM UNNEST([
  '48.49.50.51',
  '::1',
  '3031:3233:3435:3637:3839:4041:4243:4445',
  '::ffff:192.0.2.128',
  '48.49.50.51/32',
  '48.49.50',
  '::wxyz'
]) AS addr_str;
addr_str safe_ip_from_string
48.49.50.51 b"0123"
::1 b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01"
3031:3233:3435:3637:3839:4041:4243:4445 b"0123456789@ABCDE"
::ffff:192.0.2.128 b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xc0\x00\x02\x80"
48.49.50.51/32 NULL
48.49.50 NULL
::wxyz NULL

NET.IP_TO_STRING

NET.IP_TO_STRING(addr_bin)

Beschreibung Wandelt eine IPv4- oder IPv6-Adresse vom Binärformat (BYTES) in Netzwerk-Byte-Reihenfolge in das Text-Format (STRING) um.

Wenn die Eingabe 4 Byte ist, gibt die Funktion eine IPv4-Adresse als STRING zurück. Wenn die Eingabe 16 Byte ist, gibt sie eine IPv6-Adresse als STRING zurück.

Wenn diese Funktion eine NULL-Eingabe empfängt, gibt sie NULL zurück. Wenn die Eingabe eine andere Länge als 4 oder 16 Byte hat, tritt der Fehler OUT_OF_RANGE auf.

Rückgabedatentyp

STRING

Beispiel

SELECT FORMAT("%T", x) AS addr_bin, NET.IP_TO_STRING(x) AS ip_to_string
FROM UNNEST([
  b"0123",
  b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01",
  b"0123456789@ABCDE",
  b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xc0\x00\x02\x80"
]) AS x;
addr_bin ip_to_string
b"0123" 48.49.50.51
b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01" ::1
b"0123456789@ABCDE" 3031:3233:3435:3637:3839:4041:4243:4445
b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xc0\x00\x02\x80" ::ffff:192.0.2.128

NET.IP_NET_MASK

NET.IP_NET_MASK(num_output_bytes, prefix_length)

Beschreibung

Gibt eine Netzwerkmaske zurück: eine Bytesequenz mit Länge gleich num_output_bytes, wobei die ersten prefix_length-Bits auf 1 eingestellt sind und die anderen Bits auf 0. num_output_bytes und prefix_length sind INT64. Diese Funktion gibt einen Fehler aus, wenn num_output_bytes nicht 4 Byte (für IPv4) oder 16 Byte (für IPv6) ist. Außerdem wird ein Fehler ausgegeben, wenn prefix_length negativ oder größer als 8 * num_output_bytes ist.

Rückgabedatentyp

BYTES

Beispiel

SELECT x, y, FORMAT("%T", NET.IP_NET_MASK(x, y)) AS ip_net_mask
FROM UNNEST([
  STRUCT(4 as x, 0 as y),
  (4, 20),
  (4, 32),
  (16, 0),
  (16, 1),
  (16, 128)
]);
x y ip_net_mask
4 0 b"\x00\x00\x00\x00"
4 20 b"\xff\xff\xf0\x00"
4 32 b"\xff\xff\xff\xff"
16 0 b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
16 1 b"\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
16 128 b"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"

NET.IP_TRUNC

NET.IP_TRUNC(addr_bin, prefix_length)

Beschreibung Nimmt addr_bin an, eine IPv4- oder IPv6-Adresse im Binärformat (BYTES) in Netzwerk-Bytereihenfolge, und gibt eine Subnetzadresse im selben Format zurück. Das Ergebnis hat die gleiche Länge wie addr_bin, wobei die ersten prefix_length-Bit gleich denen in addr_bin und die verbleibenden Bit 0 sind.

Diese Funktion gibt einen Fehler aus, wenn LENGTH(addr_bin) nicht 4 oder 16 Byte ist oder wenn prefix_len negativ oder größer als LENGTH(addr_bin) * 8 ist.

Rückgabedatentyp

BYTES

Beispiel

SELECT
  FORMAT("%T", x) as addr_bin, prefix_length,
  FORMAT("%T", NET.IP_TRUNC(x, prefix_length)) AS ip_trunc
FROM UNNEST([
  STRUCT(b"\xAA\xBB\xCC\xDD" as x, 0 as prefix_length),
  (b"\xAA\xBB\xCC\xDD", 11), (b"\xAA\xBB\xCC\xDD", 12),
  (b"\xAA\xBB\xCC\xDD", 24), (b"\xAA\xBB\xCC\xDD", 32),
  (b'0123456789@ABCDE', 80)
]);
addr_bin prefix_length ip_trunc
b"\xaa\xbb\xcc\xdd" 0 b"\x00\x00\x00\x00"
b"\xaa\xbb\xcc\xdd" 11 b"\xaa\xa0\x00\x00"
b"\xaa\xbb\xcc\xdd" 12 b"\xaa\xb0\x00\x00"
b"\xaa\xbb\xcc\xdd" 24 b"\xaa\xbb\xcc\x00"
b"\xaa\xbb\xcc\xdd" 32 b"\xaa\xbb\xcc\xdd"
b"0123456789@ABCDE" 80 b"0123456789\x00\x00\x00\x00\x00\x00"

NET.IPV4_FROM_INT64

NET.IPV4_FROM_INT64(integer_value)

Beschreibung

Wandelt eine IPv4-Adresse vom Ganzzahlformat in das Binärformat (BYTES) in Netzwerk-Byte-Reihenfolge um. Bei der Ganzzahleingabe wird ungeachtet der Host- oder Clientarchitektur das niedrigstwertige Bit der IP-Adresse im niedrigstwertigen Bit der Ganzzahl gespeichert. Beispiel: 1 bedeutet 0.0.0.1 und 0x1FF bedeutet 0.0.1.255.

Diese Funktion prüft, ob entweder alle höchstwertigen 32 Bits 0 sind oder alle höchstwertigen 33 Bits 1 sind (zeichenerweitert von einer 32-Bit-Ganzzahl). Mit anderen Worten: Die Eingabe sollte im Bereich [-0x80000000, 0xFFFFFFFF] liegen. Andernfalls gibt diese Funktion einen Fehler aus.

Diese Funktion unterstützt kein IPv6.

Rückgabedatentyp

BYTES

Beispiel

SELECT x, x_hex, FORMAT("%T", NET.IPV4_FROM_INT64(x)) AS ipv4_from_int64
FROM (
  SELECT CAST(x_hex AS INT64) x, x_hex
  FROM UNNEST(["0x0", "0xABCDEF", "0xFFFFFFFF", "-0x1", "-0x2"]) AS x_hex
);
x x_hex ipv4_from_int64
0 0x0 b"\x00\x00\x00\x00"
11259375 0xABCDEF b"\x00\xab\xcd\xef"
4294967295 0xFFFFFFFF b"\xff\xff\xff\xff"
-1 -0x1 b"\xff\xff\xff\xff"
-2 -0x2 b"\xff\xff\xff\xfe"

NET.IPV4_TO_INT64

NET.IPV4_TO_INT64(addr_bin)

Beschreibung

Wandelt eine IPv4-Adresse vom Binärformat (BYTES) in Netzwerk-Byte-Reihenfolge in das Ganzzahlformat um. Bei der Ganzzahlausgabe wird ungeachtet der Host- oder Client-Architektur das niedrigstwertige Bit der IP-Adresse in das niedrigstwertige Bit der Ganzzahl gespeichert. Beispiel: 1 bedeutet 0.0.0.1 und 0x1FF bedeutet 0.0.1.255. Die Ausgabe liegt im Bereich [0, 0xFFFFFFFF].

Wenn die Eingabelänge nicht 4 Byte ist, gibt diese Funktion einen Fehler aus.

Diese Funktion unterstützt kein IPv6.

Rückgabedatentyp

INT64

Beispiel

SELECT
  FORMAT("%T", x) AS addr_bin,
  FORMAT("0x%X", NET.IPV4_TO_INT64(x)) AS ipv4_to_int64
FROM
UNNEST([b"\x00\x00\x00\x00", b"\x00\xab\xcd\xef", b"\xff\xff\xff\xff"]) AS x;
addr_bin ipv4_to_int64
b"\x00\x00\x00\x00" 0x0
b"\x00\xab\xcd\xef" 0xABCDEF
b"\xff\xff\xff\xff" 0xFFFFFFFF

NET.HOST

NET.HOST(url)

Beschreibung

Nimmt eine URL als STRING an und gibt den Host als STRING zurück. Optimale Ergebnisse erzielen Sie, wenn URL-Werte dem durch RFC 3986 definierten Format entsprechen. Wenn der URL-Wert nicht mit der Formatierung von RFC 3986 übereinstimmt, versucht diese Funktion trotzdem, die Eingabe zu parsen und ein relevantes Ergebnis zurückzugeben. Wenn die Funktion die Eingabe nicht parsen kann, gibt sie NULL zurück.

Hinweis: Die Funktion führt keine Normalisierung durch.

Rückgabedatentyp

STRING

Beispiel

SELECT
  FORMAT("%T", input) AS input,
  description,
  FORMAT("%T", NET.HOST(input)) AS host,
  FORMAT("%T", NET.PUBLIC_SUFFIX(input)) AS suffix,
  FORMAT("%T", NET.REG_DOMAIN(input)) AS domain
FROM (
  SELECT "" AS input, "invalid input" AS description
  UNION ALL SELECT "http://abc.xyz", "standard URL"
  UNION ALL SELECT "//user:password@a.b:80/path?query",
                   "standard URL with relative scheme, port, path and query, but no public suffix"
  UNION ALL SELECT "https://[::1]:80", "standard URL with IPv6 host"
  UNION ALL SELECT "http://例子.卷筒纸.中国", "standard URL with internationalized domain name"
  UNION ALL SELECT "    www.Example.Co.UK    ",
                   "non-standard URL with spaces, upper case letters, and without scheme"
  UNION ALL SELECT "mailto:?to=&subject=&body=", "URI rather than URL--unsupported"
);
Eingabe Beschreibung Host Suffix Domain
"" Ungültige Eingabe NULL NULL NULL
"http://abc.xyz" Standard-URL "abc.xyz" "xyz" "abc.xyz"
"//user:password@a.b:80/path?query" Standard-URL mit relativem Schema, Port, Pfad und relativer Abfrage, aber kein öffentliches Suffix "a.b" NULL NULL
"https://[::1]:80" Standard-URL mit IPv6-Host "[::1]" NULL NULL
"http://例子.卷筒纸.中国" Standard-URL mit internationalisiertem Domainnamen "例子.卷筒纸.中国" "中国" "卷筒纸.中国"
"    www.Example.Co.UK    " Nicht-Standard-URL mit Leerzeichen, Großbuchstaben und ohne Schema "www.Example.Co.UK" "Co.UK" "Example.Co.UK"
"mailto:?to=&subject=&body=" URI statt URL – nicht unterstützt "mailto" NULL NULL

NET.PUBLIC_SUFFIX

NET.PUBLIC_SUFFIX(url)

Beschreibung

Nimmt eine URL als STRING an und gibt das öffentliche Suffix (z. B. com, org oder net) als STRING zurück. Ein öffentliches Suffix ist eine ICANN-Domain, die bei publicsuffix.org registriert ist. Optimale Ergebnisse erzielen Sie, wenn URL-Werte dem durch RFC 3986 definierten Format entsprechen. Wenn der URL-Wert nicht mit der Formatierung von RFC 3986 übereinstimmt, versucht diese Funktion trotzdem, die Eingabe zu parsen und ein relevantes Ergebnis zurückzugeben.

Diese Funktion gibt NULL zurück, wenn eine der folgenden Aussagen zutrifft:

  • Der Host kann nicht aus der Eingabe geparst werden.
  • Der geparste Host enthält in der Mitte benachbarte Punkte (nicht voran- oder nachgestellt).
  • Der geparste Host enthält kein öffentliches Suffix.

Bevor das öffentliche Suffix abgerufen wird, normalisiert diese Funktion den Host vorübergehend. Hierzu werden englische Großbuchstaben in Kleinbuchstaben umgewandelt und alle Nicht-ASCII-Zeichen mit Punycode codiert. Die Funktion gibt dann das öffentliche Suffix als Teil des ursprünglichen Hosts anstelle des normalisierten Hosts zurück.

Hinweis: Die Funktion führt keine Unicode-Normalisierung durch.

Hinweis: Die Daten zu öffentlichen Suffixen bei publicsuffix.org enthalten auch private Domains. Diese Funktion ignoriert die privaten Domains.

Hinweis: Die öffentlichen Suffix-Daten können sich im Laufe der Zeit ändern. Folglich kann die Eingabe, die derzeit ein NULL-Ergebnis erzeugt, in Zukunft einen Nicht-NULL-Wert erzeugen.

Rückgabedatentyp

STRING

Beispiel

SELECT
  FORMAT("%T", input) AS input,
  description,
  FORMAT("%T", NET.HOST(input)) AS host,
  FORMAT("%T", NET.PUBLIC_SUFFIX(input)) AS suffix,
  FORMAT("%T", NET.REG_DOMAIN(input)) AS domain
FROM (
  SELECT "" AS input, "invalid input" AS description
  UNION ALL SELECT "http://abc.xyz", "standard URL"
  UNION ALL SELECT "//user:password@a.b:80/path?query",
                   "standard URL with relative scheme, port, path and query, but no public suffix"
  UNION ALL SELECT "https://[::1]:80", "standard URL with IPv6 host"
  UNION ALL SELECT "http://例子.卷筒纸.中国", "standard URL with internationalized domain name"
  UNION ALL SELECT "    www.Example.Co.UK    ",
                   "non-standard URL with spaces, upper case letters, and without scheme"
  UNION ALL SELECT "mailto:?to=&subject=&body=", "URI rather than URL--unsupported"
);
Eingabe Beschreibung Host Suffix Domain
"" Ungültige Eingabe NULL NULL NULL
"http://abc.xyz" Standard-URL "abc.xyz" "xyz" "abc.xyz"
"//user:password@a.b:80/path?query" Standard-URL mit relativem Schema, Port, Pfad und relativer Abfrage, aber kein öffentliches Suffix "a.b" NULL NULL
"https://[::1]:80" Standard-URL mit IPv6-Host "[::1]" NULL NULL
"http://例子.卷筒纸.中国" Standard-URL mit internationalisiertem Domainnamen "例子.卷筒纸.中国" "中国" "卷筒纸.中国"
"    www.Example.Co.UK    " Nicht-Standard-URL mit Leerzeichen, Großbuchstaben und ohne Schema "www.Example.Co.UK" "Co.UK" "Example.Co.UK
"mailto:?to=&subject=&body=" URI statt URL – nicht unterstützt "mailto" NULL NULL

NET.REG_DOMAIN

NET.REG_DOMAIN(url)

Beschreibung

Nimmt eine URL als STRING an und gibt die registrierte oder registrierbare Domain, also das öffentliche Suffix plus ein vorangestelltes Label, als STRING zurück. Optimale Ergebnisse erzielen Sie, wenn URL-Werte dem durch RFC 3986 definierten Format entsprechen. Wenn der URL-Wert nicht mit der Formatierung von RFC 3986 übereinstimmt, versucht diese Funktion trotzdem, die Eingabe zu parsen und ein relevantes Ergebnis zurückzugeben.

Diese Funktion gibt NULL zurück, wenn eine der folgenden Aussagen zutrifft:

  • Der Host kann nicht aus der Eingabe geparst werden.
  • Der geparste Host enthält benachbarte Punkte in der Mitte (nicht voran- oder nachgestellt);
  • Der geparste Host enthält kein öffentliches Suffix;
  • Der geparste Host enthält nur ein öffentliches Suffix ohne vorangestelltes Label.

Bevor das öffentliche Suffix abgerufen wird, normalisiert diese Funktion den Host vorübergehend, indem englische Großbuchstaben in Kleinbuchstaben umwandelt und alle Nicht-ASCII-Zeichen mit Punycode codiert werden. Die Funktion gibt dann die registrierte oder registrierbare Domain als Teil des ursprünglichen Hosts anstelle des normalisierten Hosts zurück.

Hinweis: Die Funktion führt keine Unicode-Normalisierung durch.

Hinweis: Die Daten zu öffentlichen Suffixen bei publicsuffix.org enthalten auch private Domains. Diese Funktion behandelt eine private Domain nicht als öffentliches Suffix. Wenn zum Beispiel "us.com" eine private Domain in den öffentlichen Suffixdaten ist, gibt NET.REG_DOMAIN ("foo.us.com") den Wert "us.com" (das öffentliche Suffix "com" plus das vorangestellte Label "us") statt "foo.us.com" (die private Domain "us.com" plus das vorangestellte Label "foo") zurück.

Hinweis: Die öffentlichen Suffixdaten können sich im Laufe der Zeit ändern. Folglich kann die Eingabe, die derzeit ein NULL-Ergebnis erzeugt, in Zukunft einen Nicht-NULL-Wert erzeugen.

Rückgabedatentyp

STRING

Beispiel

SELECT
  FORMAT("%T", input) AS input,
  description,
  FORMAT("%T", NET.HOST(input)) AS host,
  FORMAT("%T", NET.PUBLIC_SUFFIX(input)) AS suffix,
  FORMAT("%T", NET.REG_DOMAIN(input)) AS domain
FROM (
  SELECT "" AS input, "invalid input" AS description
  UNION ALL SELECT "http://abc.xyz", "standard URL"
  UNION ALL SELECT "//user:password@a.b:80/path?query",
                   "standard URL with relative scheme, port, path and query, but no public suffix"
  UNION ALL SELECT "https://[::1]:80", "standard URL with IPv6 host"
  UNION ALL SELECT "http://例子.卷筒纸.中国", "standard URL with internationalized domain name"
  UNION ALL SELECT "    www.Example.Co.UK    ",
                   "non-standard URL with spaces, upper case letters, and without scheme"
  UNION ALL SELECT "mailto:?to=&subject=&body=", "URI rather than URL--unsupported"
);
Eingabe Beschreibung Host Suffix Domain
"" Ungültige Eingabe NULL NULL NULL
"http://abc.xyz" Standard-URL "abc.xyz" "xyz" "abc.xyz"
"//user:password@a.b:80/path?query" Standard-URL mit relativem Schema, Port, Pfad und relativer Abfrage, aber kein öffentliches Suffix "a.b" NULL NULL
"https://[::1]:80" Standard-URL mit IPv6-Host "[::1]" NULL NULL
"http://例子.卷筒纸.中国" Standard-URL mit internationalisiertem Domainnamen "例子.卷筒纸.中国" "中国" "卷筒纸.中国"
"    www.Example.Co.UK    " Nicht-Standard-URL mit Leerzeichen, Großbuchstaben und ohne Schema "www.Example.Co.UK" "Co.UK" "Example.Co.UK"
"mailto:?to=&subject=&body=" URI statt URL – nicht unterstützt "mailto" NULL NULL