oracle中如何处理表中的空值

oracle中如何处理表中的空值,oracle,Oracle,我有一个表,它有一个字段“SUSCRIBER_ID”,表的结构是SUSCRIBER_ID字段不应该为空。现在,我想用以下条件更新该字段的值 UPDATE table_name SET SUSCRIBER_ID = DECODE (REGEXP_REPLACE (SUSCRIBER_ID,'^\D*',NULL),NULL,SUSCRIBER_ID); 出现错误名称SUSCRIBER\u ID不能为空,但是当REGEXP\u REPLACE返回空值时,我将跳过记录 数据在表中 name ----

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

UPDATE table_name SET SUSCRIBER_ID = DECODE (REGEXP_REPLACE (SUSCRIBER_ID,'^\D*',NULL),NULL,SUSCRIBER_ID);
出现错误名称SUSCRIBER\u ID不能为空,但是当REGEXP\u REPLACE返回空值时,我将跳过记录

数据在表中

name
---------
sumit123sumit
请协助

UPDATE table_name SET SUSCRIBER_ID = DECODE (REGEXP_REPLACE (SUSCRIBER_ID,'^\D*',NULL),
                                             NULL,
                                             SUSCRIBER_ID,
                                             REGEXP_REPLACE (SUSCRIBER_ID,'^\D*',NULL))
我相信您需要一个带有
REGEXP\u REPLACE()
本身的最后一个默认参数

正如@AlexPoole所说,另一种方法是使用
NVL()


为了避免重复,我将使用
NVL(REGEXP\u REPLACE(SUSCRIBER\u ID,^\d*,NULL),SUSCRIBER\u ID)
,但有些人更喜欢解码或大小写的清晰性。。。
UPDATE table_name SET SUSCRIBER_ID = NVL (REGEXP_REPLACE (SUSCRIBER_ID,'^\D*',NULL),
                                          SUSCRIBER_ID);