Previous: int 整数部 Up: mcal Next: isnull NULL値判定 MCMD2
MCMD2 : mcal : match 検索

4.51 match 検索

書式1: match(検索文字列,$str_1,str_2,\cdots $)

書式2: matcha(検索文字列,$str_1,str_2,\cdots $)

書式3: matchs(検索文字列,$str_1,str_2,\cdots $)

書式4: matchas(検索文字列,$str_1,str_2,\cdots $)

$str_1,str_2,\cdots $から指定した検索文字列を検索し、 マッチすれば真をマッチしなければ偽を返す。

OR検索かAND検索か、そして完全一致か部分一致かにより、 Table 4.21に示すとおり異なる関数名を指定する。

Table 4.21: 入力データ
 

OR検索

AND検索

完全一致

match

matcha

部分一致

matchs

matchas

match関数は、指定した検索文字列が、$str_1,str_2,\cdots $のいずれかに完全一致すれば真を返す。 matcha関数は、指定した検索文字列が、$str_1,str_2,\cdots $の全てに完全一致すれば真を返す。 matchs関数は、指定した検索文字列が、$str_1,str_2,\cdots $のいずれかに部分一致すれば真を返す。 matchas関数は、指定した検索文字列が、$str_1,str_2,\cdots $の全てに部分一致すれば真を返す。 NULL値を含めたOR/AND論理演算の真偽値表はTable 4.8を参照のこと。

利用例

例1: OR完全一致

f1,f2,f3項目のいずれかが1であれば真を返す。

$ more dat1.csv
id,f1,f2,f3
1,1,1,1
2,1,0,1
3,,,
4,1,,1
$ mcal c='match("1",$s{f1},$s{f2},$s{f3})' a=rsl i=dat1.csv o=rsl1.csv
#END# kgcal a=rsl c=match("1",$s{f1},$s{f2},$s{f3}) i=dat1.csv o=rsl1.csv
$ more rsl1.csv
id,f1,f2,f3,rsl
1,1,1,1,1
2,1,0,1,1
3,,,,0
4,1,,1,1

例2: AND完全一致

f1,f2,f3項目の全てが文字列"1"であれば真を返す。

$ mcal c='matcha("1",$s{f1},$s{f2},$s{f3})' a=rsl i=dat1.csv o=rsl2.csv
#END# kgcal a=rsl c=matcha("1",$s{f1},$s{f2},$s{f3}) i=dat1.csv o=rsl2.csv
$ more rsl2.csv
id,f1,f2,f3,rsl
1,1,1,1,1
2,1,0,1,0
3,,,,0
4,1,,1,0

例3: OR部分一致

s1,s2,s3項目のいずれかが、文字列abを含んでいれば真を返す。

$ more dat2.csv
id,s1,s2,s3
1,ab,abx,x
2,abc,xaby,xxab
3,,,
4,#ac,x,x
$ mcal c='matchs("ab",$s{s1},$s{s2},$s{s3})' a=rsl i=dat2.csv o=rsl3.csv
#END# kgcal a=rsl c=matchs("ab",$s{s1},$s{s2},$s{s3}) i=dat2.csv o=rsl3.csv
$ more rsl3.csv
id,s1,s2,s3,rsl
1,ab,abx,x,1
2,abc,xaby,xxab,1
3,,,,0
4,#ac,x,x,0

例4: AND部分一致

文字列abがs1,s2,s3項目の全てに、文字列abが含まれて入れば真を返す。

$ mcal c='matchas("ab",$s{s1},$s{s2},$s{s3})' a=rsl i=dat2.csv o=rsl4.csv
#END# kgcal a=rsl c=matchas("ab",$s{s1},$s{s2},$s{s3}) i=dat2.csv o=rsl4.csv
$ more rsl4.csv
id,s1,s2,s3,rsl
1,ab,abx,x,0
2,abc,xaby,xxab,1
3,,,,0
4,#ac,x,x,0

例5: NULL値の検索

str項目がNULL値であれば真を返す。

$ mcal c='match(nulls(),$s{s1},$s{s2},$s{s3})' a=rsl i=dat2.csv o=rsl5.csv
#END# kgcal a=rsl c=match(nulls(),$s{s1},$s{s2},$s{s3}) i=dat2.csv o=rsl5.csv
$ more rsl5.csv
id,s1,s2,s3,rsl
1,ab,abx,x,0
2,abc,xaby,xxab,0
3,,,,1
4,#ac,x,x,0
Previous: int 整数部 Up: mcal Next: isnull NULL値判定 MCMD2