Oracle db запрос с оператором if - PullRequest
0 голосов
/ 02 июля 2018

У меня проблема с этим запросом.

SELECT 
    codigo clave, descrip valor
    CASE 
       WHEN codigo IS NOT NULL 
          THEN SELECT codigo clave, codigo || ' - ' || descrip valor
       ELSE
          CASE 
             WHEN codigo IS NULL  
                SELECT codigo clave, descrip valor
          END

Мне нужно сопоставить code и "-" с чем-то вроде этого

  • 1 - опция
  • 2 - опция

Однако в некоторых случаях значение кода пустое и печатается так:

  • опция
  • опция

1 Ответ

0 голосов
/ 02 июля 2018

Вы можете использовать функцию NVL2 для построения вашего запроса. Имеет три параметра

NVL2(expr1, expr2, expr3)

Если expr1 не равен NULL, он возвращает expr2, если он равен NULL, он возвращает expr3.

Например, NVL2(codigo,'codigo-','') добавляет '-', только если codigo не пуст.

Если все сложнее, вы можете использовать оператор CASE, например, так:

SELECT CASE 
         WHEN codigo IS NOT NULL and descrip IS NOT NULL THEN codigo||'-'||descript
         WHEN codigo IS NOT NULL and descrit IS     NULL THEN codigo
         WHEN codigo IS     NULL ANd descrip IS NOT NULL THEN descrip
         ELSE NULL
       END as myresult
 FROM mytable;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...