Как я могу заменить / преобразовать число в строку - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть запрос, который работает нормально и возвращает -1:

SELECT -1 FROM (select SUM(column1), column2 
from documents where column2 is NULL group by column2) aa
where aa.column2_rid = rid and typ_doc in (4,2) and rownum = 1

Но я хочу преобразовать / заменить -1 в строку -> 'no_doc'

ЕслиЯ использую замену, она возвращает 0

Я думаю, потому что это число .....

NVL не работает.To_char(-1) тоже не работает.Или я потерпел неудачу.

SELECT REPLACE('-1', '-1', 'no_doc') FROM ....
output: 0
SELECT REPLACE(-1, -1, 2) FROM .... 
output: 2

Как мне добиться ожидаемого результата?('no_doc')

Ответы [ 3 ]

0 голосов
/ 11 декабря 2018

Почему вы не можете просто использовать 'no_doc' вместо -1 в запросе?

select 'no_doc'
from (select SUM(column1), column2 
      from documents
      where column2 is NULL
      group by column2
     ) aa
where aa.column2_rid = rid and typ_doc in (4,2) and
      rownum = 1;
0 голосов
/ 17 декабря 2018

Вы также можете использовать функцию NVL2

SELECT NVL2(TO_CHAR(-1),'no_doc','Anyhing') FROM (
select SUM(column1), column2 from documents where column2 is NULL group by column2) aa
where aa.column2_rid = rid and typ_doc in (4,2) and rownum = 1
0 голосов
/ 11 декабря 2018

это будет работать:

select decode((select -1 from dual),-1,'no_doc','anything') from dual;

для вашего запроса:

 select decode((SELECT -1 FROM (select SUM(column1), column2 
 from documents where column2 is NULL group by column2) aa
 where aa.column2_rid = rid and typ_doc in (4,2) and rownum = 
 1),-1,'no_doc','anything') from dual;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...