使用SELECT创建物化视图并在NULL处添加新值

时间:2016-06-07 06:49:35

标签: sql oracle

我正在尝试使用引用现有表的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或可以执行此操作的内容?谢谢你的帮助。

2 个答案:

答案 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