我已经使用SQL(Oracle)构建了一个连接,但是我只希望在字段中的值不为null时输出连接。我在该字段中有效地构建了一个网站URL,但在某些情况下,该链接尚不可用,但是连接仍然输出前缀(http://www。)。如果该值为null,则它应输出null。目前我有:
SELECT 'http://www.'||LINK AS "URL"
FROM TABLE
答案 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.
开头,或者甚至应该开始。