我正在尝试使用引用现有表的SELECT语句在SQL Developer中创建实例化视图,但如果现有表中的列值为null,则希望将值添加到实例化视图,否则只需将列值保留为按照表格。
例如:
Create materialized view MVIEW_NAME as (
SELECT A.* from tableOne A
CASE WHEN A.colName IS NULL THEN A.colName=NewValue
END CASE
)
显然,这种语法不正确,但不确定如何操作,或者是否存在IF STATEMENT或可以执行此操作的内容?谢谢你的帮助。
答案 0 :(得分:0)
您需要将案例表达式放在选择列表
中select
case when a.colname is null
then newvalue
else a.colname
end as colname,
[other columns]
from tableone
但是,您可以使用coalesce
更简单地执行此操作:
select
coalesce(a.colname,newvalue) as colname,
[other columns]
from tableone
请注意,这意味着您不能再使用a.*
,除非您希望在结果中复制其中一列。
答案 1 :(得分:0)
有一个名为NVL()的函数。 它检查String是否为null,如果是,则它将替换它:
SELECT A.col1, A.col2, NVL(TO_CHAR(A.col3), 'Your new value') from tableOne A
目前尚不清楚新值是否应该是另一列。如果您只想用值替换NULL列,那么这将是一种简单的方法。 您也可以直接在select语句中使用CASE WHEN,而使用其他列。像这样:
SELECT A.Col1,
CASE A.Col2 WHEN NULL THEN A.Col3
WHEN 0 THEN A.Col3
ELSE A.Col2 END
FROM tableOne A