【发布时间】:2018-05-16 05:18:03
【问题描述】:
我需要从数据库中提取 url,在此过程中稍微重新格式化它们。 db 中的一些 URL 指定了端口号,有些则没有。我用的是 Presto 的方便的URL extraction functions,比如 url_extract_port。
但是,当以下 sql 遇到未指定端口的 url 时,它会返回 null - 即使对于实际上不是 null 的行也是如此。 (如果我删除 url_extract_port 函数,我会得到链接值,但没有端口。)
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?
【问题讨论】:
-
一个案例表达式?
case when url_extract_port(link) > 0 then x else y end -
一个好主意。但我现在也想知道 coalesce(value1, value2) 在这里是否很好。除了第二个值是空白的。虽然也许没关系。
-
具体来说,我会尝试 cast(coalesce(url_extract_port(link),""))。