只有在值不为null时才需要显示连接

时间:2015-02-12 17:19:45

标签: sql oracle concatenation

我已经使用SQL(Oracle)构建了一个连接,但是我只希望在字段中的值不为null时输出连接。我在该字段中有效地构建了一个网站URL,但在某些情况下,该链接尚不可用,但是连接仍然输出前缀(http://www。)。如果该值为null,则它应输出null。目前我有:

SELECT 'http://www.'||LINK AS "URL"
FROM TABLE

3 个答案:

答案 0 :(得分:3)

如果只选择TABLE LINK IS NOT NULL不是NVL2()选项的行,则可以使用SELECT NVL2(LINK, 'http://www.'||LINK, NULL) AS "URL" FROM TABLE; 。它接受三个参数 - 一个字符串,如果字符串不为null则返回的值,以及字符串为null时返回的值。

{{1}}

答案 1 :(得分:0)

您可以使用NVL2作为建议的其他答案。或者做一些像 -

这样的事情
SELECT CASE WHEN LINK IS NOT NULL THEN 
         'http://www.' || LINK 
       ELSE 
         NULL 
       END
          AS "URL"
FROM TABLE;

答案 2 :(得分:0)

我会更进一步。您拥有Oracle,因此您可以使用正则表达式(或者如果您有9i或更高版本,则可以使用),因此您可以检查链接是否已经以http://开头:

SELECT CASE WHEN REGEXP_LIKE(link, '^https?:\/\/') THEN link
  WHEN link IS NOT NULL THEN 'http://www.' || link END AS url
  FROM mytable;

如果没有CASE子句,NULL语句将返回ELSE,因此您无需为link IS NULL添加明确的大小写。就个人而言,我会尽可能确保link也不是以www.开头,或者甚至应该开始。