добавить строку в поле varchar2 на основе значения другого поля - PullRequest
1 голос
/ 15 декабря 2011

Таблица 1 содержит

col1 varchar2(85) 
col2 date

В столбце col1 достаточно места для символов.Если значение col2 ранее 2001 года, необходимо добавить к любому значению в столбце col1 значение OLD к внешнему интерфейсу любого значения, которое может быть в столбце col1.

В некоторых случаях col1 будет иметь значение NULL.Самое большее, он будет иметь значения длиной менее 40 символов.

Существует ли инструкция SQL, которая может выполнить это, не входя в PL / SQL?

Оценить любую помощь.

Ответы [ 2 ]

2 голосов
/ 15 декабря 2011

Должно работать что-то вроде следующего:

select case when to_char(COL2, 'yyyy') < 2001
            then 'OLD ' || nvl(COL1, '')
            else COL1 end case
from   TAB1

Например:

insert into TAB1 values ('testpost2001', trunc(sysdate));

insert into TAB1 values ('testpre2001', '01/Jul/2000');

insert into TAB1 values (null, trunc(sysdate));

insert into TAB1 values (null, '01/Jul/2000');

select COL1, COL2,
       case when to_char(COL2, 'yyyy') < 2001
       then 'OLD ' || nvl(COL1, '')
       else COL1 end case
from   TAB1;

Возвращает:

COL1           COL2          CASE
testpost2001   15/12/2011    testpost2001
testpre2001    1/07/2000     OLD testpre2001
               15/12/2011    
                1/07/2000    OLD 
0 голосов
/ 15 декабря 2011

Это также будет работать только в одном операторе SQL, так как обновит все строки, имеющие значение меньше 2001 ...

update TAB1 set col1='OLD ' || nvl(COL1, '') where to_char(COL2, 'yyyy') < 2001;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...