ABAP的匹配
通配符
字符串操作中的通配符
*
:多位字符的通配符+
:一位字符的通配符#
:字符操作中的转义符REPORT ztest_placeholder. DATA:l_name(8) TYPE c VALUE 'ZhangSan'. * *号是多位的通配符 IF l_name CP '*San'. WRITE: '*:YES'. ELSE. WRITE: '*:NO'. ENDIF. * +号是一位通配符 IF l_name CP '+San'. WRITE:/ '+:YES'. ELSE. WRITE:/ '+:NO'. ENDIF.
输出
*
:YES+
:NO
OPEN SQL where条件中通配符
%
:多位字符的通配符_
:一位字符的通配符ESCAPE
:Where条件中转义符TABLES:makt. SELECT SINGLE * FROM makt WHERE spras = 1 AND maktx LIKE '%/_' ESCAPE '/' .
CA,CO,CS,CP
CA(Contain Any)
str1 ca str2 遍历str1,其中的每个字符对应到str2的每个字符,如果对应成功,注意:只要有一个字符成功,就为true.
str1 = '我a'. str2 = 'hubab'. str1 ca str2 -true
CO(Contain Only)
str1 co str2 遍历str1,其中的每个字符对应到str2的每个字符,如果对应成功,注意:str1中的每一個字符成功,就为true.
可用于判断是否为数字。ca ‘0123456789’
str1 = '我a'. str2 = 'hubab'. str1 ca str2 -false str1 = 'ba'. str2 = 'hubab'. str1 ca str2 -true
CS(Contain String)
str1 cs str2 str1 是否包含str2。
CP(Contain Pattern)
加入通配符的匹配
str1 = 'aac' str2 = '#aA#c str1 cp str2 -true str1 = 'aAc' str2 = '#aA#c' str1 cp str2 -true
NOTE
CO / CN contains only or not
CA / NA contains any or not any
CS / NS contain string or not
CP / NP contains pattern or not
CO, NO, CA, NA比较时区分大小写, 并且尾部空格也在比较的范围之内
CS, NS, CP, NP不区分大小写和尾部空格
比较结束后,如果结果为真,sy-fdpos将给出s2在s1中的偏移量信息
str1 = '123abc123' str2 = '*abc*' sy-fdpos = 3.
使用正则表达式
^
表示否定FIND FIRST OCCURRENCE OF REGEX '[^a-zA-Z]' IN p_input3. IF sy-subrc = 0. MESSAGE 'There is some non-letter in your input.' TYPE 'E'. ENDIF.