只希望在值不为 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.
开头,或者甚至应该如此。
我已经使用 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.
开头,或者甚至应该如此。