Запрос на возврат текста, если строка равна нулю из oracle db - PullRequest
1 голос
/ 02 апреля 2012

Прямо сейчас у меня есть запрос, который дает мне пустое место, и это хорошо, но мне действительно нужно что-то, что возвращает «Пусто», если оно пустое.Я поиграл с несколькими вариантами, и сейчас это лучший запрос, который у меня есть, но я не уверен, как заставить его отображать «EMPTY», если он нулевой.

SELECT paramOne, paramTwo
FROM tableName
WHERE search_param = 'x' 

UNION ALL

SELECT NULL, NULL
FROM dual
WHERE NOT EXISTS (
SELECT paramOne, paramTwo
FROM tableName
WHERE search_param = 'x'
);

paramOne - это число paramTwo - это varchar

Результат, который я ищу, в основном таков:

если в строке есть данные, она должна вернуть 123, Имя

если в строке нет данных, она должна быть 000, «пусто»

Ответы [ 3 ]

4 голосов
/ 02 апреля 2012

Я подозреваю, что paramTwo (varchar2) на самом деле не равен нулю, попробуйте:

SELECT nvl(paramOne, 0), nvl(trim(paramTwo), 'EMPTY')
FROM tableName
WHERE search_param = 'x'
2 голосов
/ 02 апреля 2012

Это немного похоже на то, что вы должны рассмотреть на стороне клиента, а не в своем запросе ... но вы можете просто жестко кодировать 'EMPTY' вместо NULL:

SELECT paramOne, paramTwo
FROM tableName
WHERE search_param = 'x' 

UNION ALL

SELECT 'EMPTY', 'EMPTY'
FROM dual
WHERE NOT EXISTS (
SELECT paramOne, paramTwo
FROM tableName
WHERE search_param = 'x'
);
1 голос
/ 02 апреля 2012

Если вы хотите превратить значение NULL в значение, отличное от NULL, используйте функцию NVL

SELECT NVL( paramOne, 'Empty' ),
       NVL( paramTwo, 'Empty' )
  FROM table_name
 WHERE search_param = 'x';

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

...