web-dev-qa-db-ja.com

null値をテキストに置き換える方法は?

従業員last_nameとOracle SQLの従業員テーブルからのコミッション金額を表示する必要がありますが、条件は、印刷する必要があるNULL値に遭遇した場合です"コミッションなし"
最初の部分については、次のように書きました:

select last_name, commission_pct from employees;

しかし、NULL値を"No Commission"で置き換える方法を取得できません。

13
Rishabh Prasad

case式を使用できます。

select last_name
     , case when commision_pct is null then 'No Commission' else commision_pct end    
from employees;

またはcoalesce

select last_name
     , coalesce(commision_pct, 'No Commission')
from employees;

またはnvl

 select last_name
     , nvl(commision_pct, 'No Commission')
from employees;

PS。commision_pctのデータ型がvarcharではない場合、castまたはto_charも使用する必要があります

29
potashin

Oracleの場合

select last_name, nvl(commission_pct,'No Commission')
from employees;

SQLの場合

select last_name, isnull(commission_pct,"No Commission") as commission_pct
    from employees;
6
Jaimin Soni

last_Name、decode(nvl(salary commission_pct、 '0')、0、 'No Commission'、salary commission_pct)を従業員からのCOMMとして選択します。

2
ajeesh

Isnull() NULL値をそこに渡すデフォルト値に置き換えるために使用されるため、ここでやったことはIf "commission_pct" having NULL値は、それを"No Commission" textに置き換えます。これは、ISNULL()で2番目のパラメーターとして渡しました。

  select last_name, 
    ISNULL(commission_pct,'No Commission') AS commission_pct
    from employees;
2
Chirag Thakar

別の代替案は、非常にシンプルで正確です:

nvl(to_char(commision_pct), 'No Commission') 

以来、commision_pct[〜#〜] number [〜#〜]データ型、to_charは、明示的に文字列に変換します。

2
Lalit Kumar B

このような状態の場合:

Select job_id, job_title, employee_id
from jobs join job_history using (job_id);

そしてそこで働いていたすべてのemployee_idを表示し、そうでない場合はvarcharに置き換えます

0
Kinan