Presto URL 函数
Presto URL Functions
我需要从数据库中提取 urls,在此过程中稍微重新格式化它们。数据库中的某些 URL 指定了端口号,有些则没有。我用的是 Presto 的 handy URL extraction functions,比如 url_extract_port。
但是,当以下 sql 遇到未指定端口的 url 时,它 returns 为 null - 即使对于实际上不为 null 的行也是如此。 (如果我删除 url_extract_port 函数,我会得到 link 值,但没有端口。)
SELECT
concat(
url_extract_protocol(link)
,'://'
,url_extract_host(link)
,':'
,cast(url_extract_port(link) AS VARCHAR)
)
AS url
FROM db.schema.urltable
WHERE link is not null
有没有办法在 sql 中指定我只想在指定端口时使用 url_extract_port?
coalesce函数解决问题,url_extract_port行改为:
,coalesce(cast(url_extract_port(link) AS VARCHAR),'')
如果端口不存在,url_extract_port returns 为空。因此,当与 coalesce 一起使用时,将返回默认值,在本例中为空字符串。
我需要从数据库中提取 urls,在此过程中稍微重新格式化它们。数据库中的某些 URL 指定了端口号,有些则没有。我用的是 Presto 的 handy URL extraction functions,比如 url_extract_port。
但是,当以下 sql 遇到未指定端口的 url 时,它 returns 为 null - 即使对于实际上不为 null 的行也是如此。 (如果我删除 url_extract_port 函数,我会得到 link 值,但没有端口。)
SELECT
concat(
url_extract_protocol(link)
,'://'
,url_extract_host(link)
,':'
,cast(url_extract_port(link) AS VARCHAR)
)
AS url
FROM db.schema.urltable
WHERE link is not null
有没有办法在 sql 中指定我只想在指定端口时使用 url_extract_port?
coalesce函数解决问题,url_extract_port行改为:
,coalesce(cast(url_extract_port(link) AS VARCHAR),'')
如果端口不存在,url_extract_port returns 为空。因此,当与 coalesce 一起使用时,将返回默认值,在本例中为空字符串。