ABAP - Keyword Documentation →  ABAP - Reference →  Processing External Data →  ABAP Database Accesses →  Open SQL →  Open SQL - Operands and Expressions →  Open SQL - Conditions sql_cond →  sql_cond - rel_exp for Statements → 

Quick Reference

sql_cond - LIKE

Syntax

... operand1 [NOT] LIKE operand2 [ESCAPE esc] ...

Addition:

... ESCAPE esc

Effect

This relational expression is true if the value of the operand operand1 matches (does not match) the pattern in the operand operand2.

The data type of operand1 can be one of the dictionary types CHAR, NUMC, CLNT, LANG, DATS, TIMS, ACCP, CUKY, UNIT, or SSTRING. The data type of operand2 must be c or string. The content of operand2 should match the data type of operand1 in accordance with the rules for lossless assignments. This is also checked by the strict modes of the syntax check from Release 7.40, SP08 and can raise an exception.

A pattern in operand2 is defined using the following wildcard characters:

The pattern is case-sensitive. Trailing blanks in operand2 are ignored. This also applies in particular to operands of the type string with trailing blanks that are otherwise respected in ABAP.

If the pattern in operand2 consists of precisely one "%" character, the evaluation of the condition in the database interface is optimized so that the condition is not passed to the database and that, instead, operand1 LIKE '%' is always true regardless of the content of operand1 and operand1 NOT LIKE '%' is always false.

Notes

Example

Full text search in a table with text columns.

DATA srch_str TYPE string.
cl_demo_input=>request( CHANGING field = srch_str ).

IF srch_str IS INITIAL.
  RETURN.
ENDIF.

srch_str = '%' && srch_str && '%'.

SELECT *
       FROM doktl
       WHERE id      = 'SD'      AND
             object  LIKE 'AB%'  AND
             langu   = @sy-langu AND
             typ     = 'E'       AND
             doktext LIKE @srch_str
       INTO TABLE @DATA(text_tab)
       UP TO 100 ROWS.

IF sy-subrc = 0.
  cl_demo_output=>display( text_tab ).
ENDIF.

Example

Pattern synchronization for a numeric column of the table DEMO_EXPRESSIONS. A CAST expression is used here to create the required character-like data type.

DELETE FROM demo_expressions.
INSERT demo_expressions FROM TABLE @(
  VALUE #( ( id = 'X' num1 = 111 )
           ( id = 'Y' num1 = 222 )
           ( id = 'Z' num1 = 333 ) ) ).

SELECT FROM demo_expressions
       FIELDS id, num1
       WHERE CAST( num1 AS CHAR ) LIKE '2%'
       INTO TABLE @DATA(result).

cl_demo_output=>display( result ).

Addition

... ESCAPE esc.

Effect

The addition ESCAPE can be used to define a single-character escape character. esc expects a flat character-like data object with the length 1 containing the escape character. A literal or a host variable prefixed with @ can be specified. In the pattern in operand2, the escape character in esc may only be placed before a wildcard character or before the escape character itself. In this case, these lose their special meaning.

If an escape character in operand2 is not placed in front of a valid character, an exception of the class CX_SY_OPEN_SQL_DB is raised. The addition ESCAPE cannot be used when reading pooled tables.

Notes

Example

To search for the pattern '100%', the following expression can be used with # as the escape character.

... LIKE '100#%' ESCAPE '#' ...