我有下表:
表1
USER_ID NAME AGE GENDER ZIP_CODE
1 John 33 M 01086
2 NULL 22 M 01247
3 Brown NULL F 01581
我想在位末添加一个位图。
USER_ID NAME AGE GENDER ZIP_CODE NULL_COLUMN
1 John 33 M 01086 00000
2 NULL 22 M 01247 01000
3 Brown NULL F 01581 00100
逻辑是
如果值不是NULL,则分配0
如果value = NULL,则分配1
此外,如果我将列设为NULL,则它需要以以下方式更新NULL_COLUMN:
Update table1 set name = NULL;
表1
USER_ID NAME AGE GENDER ZIP_CODE NULL_COLUMN
1 NULL 33 M 01086 01000
2 NULL 22 M 01247 01000
3 NULL NULL F 01581 01100
Oracle SQL中是否有一种使用条件创建NULL_COLUMN并在值变为NULL时对其进行更新的方法?
答案 0 :(得分:3)
您可以使用生成的列:
alter table table1
add null_map generated always as (nvl2(userJ_id, '1', '0') || nvl2(name, '1', '0') || nvl2(age, '1', '') || nvl2(gender, '1', '') || nvl2(zip_code, '1', '0'));
答案 1 :(得分:0)
您可以将concat用于NVL2
select USER_ID
,NAME
,AGE
,GENDE
,ZIP_CODE
, '0' || NVL2( NAME, '1', '0' ) ||
NVL2( AGE, '1', '0' ) ||
NVL2( GENDER, '1', '0' ) ||
NVL2( ZIP_CODE, '1', '0' ) NULL_COLUMN
来自my_table