如何在oracle中的表中处理null值

时间:2014-02-27 17:21:30

标签: oracle

我有一个表有一个字段“SUSCRIBER_ID”,表的结构是SUSCRIBER_ID字段不应该为空。现在,我想用以下条件更新该字段的值。

UPDATE table_name SET SUSCRIBER_ID = DECODE (REGEXP_REPLACE (SUSCRIBER_ID,'^\D*',NULL),NULL,SUSCRIBER_ID);

错误即将发生名称SUSCRIBER_ID不能为null但是当REGEXP_REPLACE返回空值时,我正在跳过记录

数据在表格中

name
---------
sumit123sumit

请协助

1 个答案:

答案 0 :(得分:1)

UPDATE table_name SET SUSCRIBER_ID = DECODE (REGEXP_REPLACE (SUSCRIBER_ID,'^\D*',NULL),
                                             NULL,
                                             SUSCRIBER_ID,
                                             REGEXP_REPLACE (SUSCRIBER_ID,'^\D*',NULL))

我相信你需要一个REGEXP_REPLACE()本身的最终默认参数。

正如@AlexPoole所说,其他方式是使用NVL()

UPDATE table_name SET SUSCRIBER_ID = NVL (REGEXP_REPLACE (SUSCRIBER_ID,'^\D*',NULL),
                                          SUSCRIBER_ID);