Previous: hour 時 Up: mcal Next: int 整数部 MCMD2
MCMD2 : mcal : if 条件選択

4.49 if 条件選択

書式: if($bool,num_1,num_2$), if($bool,str_1,str_2$), if($bool,date_1,date_2$),if($bool,time_1,time_2$),if($bool,bool_1,bool_2$)

第1パラメータの値が真であれば第2パラメータを、偽であれば第3パラメータを返す。 第1パラメータがNULL値であればNULL値を返す。 第2パラメータと第3パラメータは同じ型でなくてはならないことに注意する。

利用例

例1: 基本例

time項目が数値として120000以下であれば"AM"、そうでなければ"PM"を出力する。

$ more dat1.csv
id,time
1,101215
2,210110
3,
4,120001
$ mcal c='if(${time}<=120000,"AM","PM")' a=ampm i=dat1.csv o=rsl1.csv
#END# kgcal a=ampm c=if(${time}<=120000,"AM","PM") i=dat1.csv o=rsl1.csv
$ more rsl1.csv
id,time,ampm
1,101215,AM
2,210110,PM
3,,
4,120001,PM

例2: 異なる型を指定した場合

第2パラメータと第3パラメータに異なる型を指定するとエラーとなる。

$ mcal c='if(${time}<=120000,"am",1)' a=ampm i=dat1.csv o=rsl2.csv
#ERROR# unknown function or operator: if_BSN (kgcal)
$ more rsl2.csv

例3: 真偽値による条件選択

$b{項目名}によって、データ上の値"1"は真、 "0"は偽、そしてその他の値はNULLとして解釈される。

$ more dat2.csv
id,val
1,1
2,0
3,
4,-2
$ mcal c='if($b{val},"true","false")' a=bool i=dat2.csv o=rsl3.csv
#END# kgcal a=bool c=if($b{val},"true","false") i=dat2.csv o=rsl3.csv
$ more rsl3.csv
id,val,bool
1,1,true
2,0,false
3,,
4,-2,

例4: 時刻型として比較

$ mcal c='if($t{time}<=0t120000,"am","pm")' a=ampm i=dat1.csv o=rsl4.csv
#END# kgcal a=ampm c=if($t{time}<=0t120000,"am","pm") i=dat1.csv o=rsl4.csv
$ more rsl4.csv
id,time,ampm
1,101215,am
2,210110,pm
3,,
4,120001,pm

例5: if関数のネスト

$ more dat3.csv
id,val
1,10
2,0
3,-5
4,0
$ mcal c='if(${val}>0,"plus",if(${val}<0,"minus","zero"))' a=sign i=dat3.csv o=rsl5.csv
#END# kgcal a=sign c=if(${val}>0,"plus",if(${val}<0,"minus","zero")) i=dat3.csv o=rsl5.csv
$ more rsl5.csv
id,val,sign
1,10,plus
2,0,zero
3,-5,minus
4,0,zero
Previous: hour 時 Up: mcal Next: int 整数部 MCMD2