Функция NVL не возвращает выражение 2 - PullRequest
1 голос
/ 13 марта 2019

в следующем запросе accoount_num равно varchar2(20), не возвращая NA. 999910026A нет в моей таблице. Я использую базу данных оракула. Это выглядит очень странно для меня.

select NVL(account_num,'NA') 
from account 
where account_num='999910026A'

Пожалуйста, помогите мне понять это. enter image description here

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 13 марта 2019

Предполагая, что поле account_num имеет уникальные значения в таблице (может быть, даже ключ?), Вы можете сделать это, применив агрегацию - которая всегда будет возвращать результат: один результат.

select nvl(min(account_num),'NA') 
from account 
where account_num='999910026A'
0 голосов
/ 13 марта 2019

В таблице нет строк с account_num='999910026A', поэтому строки не возвращаются, и нечего применять nvl.Один из способов эмулировать это поведение с помощью left join:

SELECT    NVL(account_num, 'NA') 
FROM      (SELECT '999910026A' AS literal
           FROM   dual) l
LEFT JOIN account ON account_num = literal
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...