Presto URL功能

时间:2017-12-02 04:32:01

标签: sql presto

我需要从数据库中提取网址,在此过程中稍微重新格式化它们。数据库中的某些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?

1 个答案:

答案 0 :(得分:0)

coalesce函数解决了问题, url_extract_port 行更改为:

,coalesce(cast(url_extract_port(link) AS VARCHAR),'')

如果端口不存在, url_extract_port 将返回null。因此,当使用coalesce显示时,将返回默认值,在本例中为空字符串。