只希望在值不为 null 时出现 Concatenation

Only want a Concatenation to appear when the value is not null

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

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

如果仅选择 TABLE 中的行,其中 LINK IS NOT NULL 不是一个选项,您可以为此使用 NVL2()。它接受三个参数 - 一个字符串,如果字符串不为空则为 return 的值,如果字符串为空则为 return 的值。

SELECT NVL2(LINK, 'http://www.'||LINK, NULL) AS "URL" FROM TABLE;

您可以按照建议的其他答案使用 NVL2。或者做一些类似的事情 -

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

我会走得更远。你有 Oracle,所以你有正则表达式供你使用(或者如果你有 9i 或更高版本,你就有),所以你可以检查你的 link 是否已经以 http://:

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

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