ABAP中de字符串比较

文字列と数値列の比較 

https://help.sap.com/doc/saphelp_470/4.7/ja-JP/fc/eb3516358411d1829f0000e829fbfe/content.htm?no_cache=true

 

文字列( C 型)と数値の文字列( N 型)を比較するときは、論理式で次の演算子を使用することができます。

 

< 演算子 >

意味

CO

すべて含まれる

CN

以外も含まれる

CA

少なくとも1文字

NA

含まれない

CS

文字列が含まれる

NS

文字列が含まれない

CP

パターンが含まれる

NP

パターンが含まれない

 

比較に、上記のいずれかの演算子が含まれている場合は、オペランドのデータ型は N または C でなければなりません。なぜならば、タイプ N からタイプ C への変換以外のデータ型変換は行われないからです。

演算子の機能は次のとおりです。

CO (すべて含まれる)

論理式

<f1> CO <f2>

は、 <f1> の文字すべてが <f2> に含まれているときに真となります。比較は大文字と小文字を区別します。右側の空白は無視されません。真であれば、 <f1> の長さが SY-FDPOS から返されます。偽であれば、 <f1> の文字のうち、 <f2> に含まれていない最初の文字のオフセットが SY-FDPOS から返されます。

CN (以外も含まれる)

論理式

<f1> CN <f2>

が真であるのは、 <f2> に属さない文字が <f1> に含まれている場合です。比較は大文字と小文字を区別します。右側の空白は無視されません。比較が真である場合は、システム項目の SY-FDPOS には、 <f2> には含まれない文字で、最初に <f1> 内に現れた文字のオフセットが入ります。偽の場合には、 SY-FDPOS には <f1> の長さが入ります。

CA (少なくとも1文字)

論理式

<f1> CA <f2>

が真であるのは、 <f2> にある文字が少なくとも1個 <f1> に含まれる場合です。比較は大文字と小文字を区別します。比較が真であれば、 <f2> にも含まれる <f1> の最初の文字がシステム項目 SY-FDPOS に格納されます。偽の場合には、 SY-FDPOS には <f1> の長さが入ります。

NA (含まれない)

論理式

<f1> NA <f2>

は、 <f2> に含まれる文字が <f1> に1つも含まれないと真になります。比較は大文字と小文字を区別します。真であれば、 <f1> の長さが SY-FDPOS から返されます。偽であれば、 <f1> の文字のうち <f2> にも含まれている最初の文字のオフセットが返されます。

CS (文字列が含まれる)

論理式

<f1> CS <f2>

が真であるのは、 <f1> が文字列 <f2> を含む場合です。後続のスペースは無視され、比較では大文字 / 小文字は区別 されません。比較の結果が真である場合は、システム項目の SY-FDPOS には <f1> 内の <f2> のオフセットが入ります。偽の場合には、SY-FDPOS には <f1> の長さが入ります。

NS (文字列が含まれない)

論理式

<f1> NS <f2>

は、文字列 <f2> が <f1> に含まれていなければ真になります。後続のスペースは無視され、比較では大文字 / 小文字は区別 されません。真であれば、 <f1> の長さが SY-FDPOS から返されます。偽の場合は、 SY-FDPOS には <f1> 内の <f2> のオフセットが入ります。

CP (パターンが含まれる)

論理式

<f1> CP <f2>

は、パターン <f2> が <f1> に含まれていると真になります。 <f2> が C 型のときは、 <f2> の中で次のワイルドカードを使用することができます。

  • * 任意の文字列を表します
  • + 任意の1文字を表します

後続のスペースは無視され、比較では大文字 / 小文字は区別 されません。比較の結果が真である場合は、システム項目の SY-FDPOS には <f1> 内の <f2> のオフセットが入ります。偽の場合には、 SY-FDPOS には <f1> の長さが入ります。

<f2> 内の文字を特定して比較を行う場合は、その文字の前にエスケープ文字である # を入れてください。また、エスケープ文字を使うことで次の文字を指定できます。

  • 大文字と小文字
  • ワイルドカード文字 ” * ” (#*) #* を入力してください)
  • ワイルドカード文字 ” + ” (#+) # + を入力してください)
  • エスケープ記号 (##) ## と入力)
  • 文字列の最後の空白 (#___) #___ を入力してください)

NP (パターンが含まれない)

論理式

<f1> NP <f2> が真であるのは、 <f1> がパターン <f2> を含まない場合です。 <f2> では、演算子 CP の場合と同じワイルドカードおよびエスケープ文字を使用することができます。

後続のスペースは無視され、比較では大文字 / 小文字は区別 されません。真であれば、 <f1> の長さが SY-FDPOS から返されます。偽の場合は、 SY-FDPOS には <f1> 内の <f2> のオフセットが入ります。

例

DATA: F1(5) TYPE C VALUE <f1>,

      F2(5) TYPE C VALUE <f2>.

IF F1 < 演算子 > F2. 
   WRITE: / 'Comparison true, SY-FDPOS=', SY-FDPOS. 
ELSE. 
   WRITE: / 'Comparison false, SY-FDPOS=', SY-FDPOS. 
ENDIF.

以下のテーブルに、使用する演算子と F1/F2 項目別にこのプログラムを実行した結果を示します。

<f1>

< 演算子 >

<f2>

結果

SY-FDPOS

'BD '

CO

'ABCD '

5

'BD '

CO

'ABCDE'

2

'ABC12'

CN

'ABCD '

3

'ABABC'

CN

'ABCD '

5

'ABcde'

CA

'Bd '

1

'ABcde'

CA

'bD '

5

'ABAB '

NA

'AB '

0

'ababa'

NA

'AB '

5

'ABcde'

CS

'bC '

1

'ABcde'

CS

'ce '

5

'ABcde'

NS

'bC '

1

'ABcde'

NS

'ce '

5

'ABcde'

CP

'*b*'

1

'ABcde'

CP

'*#b*'

5

'ABcde'

NP

'*b*'

1

'ABcde'

NP

'*#b*'

5

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值