Инициализировать некоторые данные, если данные не присутствуют в определенных полях - PullRequest
0 голосов
/ 25 августа 2010

Я хочу поместить одно и то же значение в некоторые поля, где данные отсутствуют, для этого мне нужно запросить каждое поле и посмотреть, есть ли данные или нет и, соответственно, поместить данные, или есть другая работа.

Как и

Name    Age    City
N        22      J
K                K
          23     L

Здесь я хочу поместить данные в те поля, в которых нет данных, иначе я не хочу касаться этих полей.После вставки он должен выглядеть следующим образом:

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

Нет подтверждения для типа данных, все имеют один и тот же тип данных.Как мне написать запрос в этом случае ..

Ответы [ 3 ]

2 голосов
/ 25 августа 2010
select NVL(name, 'Gar'), NVL(age, 'Gar'), city from your_table;
0 голосов
/ 25 августа 2010

Ты это понимаешь?

создать тестовую таблицу ...

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
0 голосов
/ 25 августа 2010

Если вы просто хотите сделать это для всех строк в таблице, вы можете сделать что-то вроде

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

Это предполагает, что 'age' - это символьное поле.

Делитесь и наслаждайтесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...