如果某些字段中不存在数据,则初始化为某些数据

时间:2010-08-25 14:12:31

标签: sql oracle database

我想在一些不存在数据的字段中添加相同的值,因为我需要查询每个字段并查看是否存在数据并相应地放置数据,或者还有其他一些工作环境

Name    Age    City
N        22      J
K                K
          23     L

这里我想把数据放在那些没有数据的字段上,否则我不想触摸tghose字段。插入后应该看起来像

Name    Age    City
N        22      J
K        Gar     K
Gar      23      L

数据类型没有验证,所有数据类型都相同。在这种情况下我该如何编写查询..

3 个答案:

答案 0 :(得分:2)

select NVL(name, 'Gar'), NVL(age, 'Gar'), city from your_table;

答案 1 :(得分:0)

如果您只想对表中的所有行执行此操作,则可以执行类似

的操作
UPDATE your_table
  SET name = NVL(name, 'Gar'),
      age = NVL(age, 'Gar');

这假定'age'是一个字符字段。

分享并享受。

答案 2 :(得分:0)

你这样做吗?

创建测试表...

create table test_table(Name VARCHAR2(10), Age NUMBER(10), City VARCHAR2(10));

插入样本数据......

insert into test_table(Name, Age, City) values('N', 22, 'J');
insert into test_table(Name, Age, City) values('K', NULL, 'K');
insert into test_table(Name, Age, City) values(NULL, 23, 'L');
commit;

数据看起来像这样......

SQL> select * from test_table;

NAME              AGE CITY
---------- ---------- ----------
N                  22 J
K                     K
                   23 L

最后使用CASE语句以编程方式更新示例数据...

update test_table
  set Name = (CASE WHEN Name IS NULL AND Age >= 23 THEN 'John' ELSE Name END)
     ,Age = (CASE WHEN Age IS NULL AND Name = 'K' THEN 21 ELSE Age END)
;
commit;

3 rows updated

现在数据看起来像这样......

SQL> select * from test_table;

NAME              AGE CITY
---------- ---------- ----------
N                  22 J
K                  21 K
John               23 L