DOMAIN
(和在傳統SQL其他URL處理函數)有很多限制,很遺憾。雖然我們還沒有standard SQL中的對等項(取消選中「在選項下使用舊版SQL」框),但您可以使用正則表達式在更多情況下構建自己的項目。還有的StackOverflow questions有關域提取a number,我們可以把其中一個答案使用爲:
CREATE TEMPORARY FUNCTION GetDomain(url STRING) AS (
REGEXP_EXTRACT(url, r'^(?:https?:\/\/)?(?:[^@\n][email protected])?(?:www\.)?([^:\/\n]+)'));
WITH T AS (
SELECT url
FROM UNNEST(['WWW.FOO.COM.AU:8080', 'google.com',
'www.abc.xyz', 'http://example.com']) AS url)
SELECT
url,
GetDomain(url) AS domain
FROM T;
+---------------------+----------------+
| url | domain |
+---------------------+----------------+
| www.abc.xyz | abc.xyz |
| WWW.FOO.COM.AU:8080 | WWW.FOO.COM.AU |
| google.com | google.com |
| http://example.com | example.com |
+---------------------+----------------+
我覺得這是在檢測例如.com .NET .ORG等原頂級域名中的錯誤 - 看起來他們是較低的。其餘的並不重要,並按原樣運輸。因此與TLD相同的問題() –