VMS Help  —  RDML72  Statements  MATCHING
    Lets you use the asterisk (*) and percent (%) pattern matching
    characters in combination with other symbols to test for
    the presence of a specified string anywhere inside a string
    expression.

    You do not have to use the pattern matching characters if the
    string you specify matches the data stored in the database
    exactly. (If the database field is defined as TEXT 10, the string
    you specify must be exactly ten characters.)

    Records are included in the record stream if the string specified
    by match expression is found within the string specified by the
    value expression. The character * matches any string that maps
    onto its position. The character % matches any character that
    maps onto its position. When MATCHING is preceded by the optional
    qualifier NOT, a record is included in the stream if the pattern
    string is not found within the target string.

    MATCHING is not case sensitive; it considers uppercase and
    lowercase forms of the same character to be a match.

1  –  Examples

    The following programs demonstrate the use of the MATCHING
    conditional expression and the SORTED clause. These programs
    create a record stream containing all the records in the
    EMPLOYEES relation in which the field LAST_NAME begins with the
    letter "R". Then the programs sort the record stream in ascending
    numerical order of the employee IDS. These programs print, in
    numerical order, the employee ID, followed by the last name and
    first name for all the records in the record stream.

1.1  –  C Example

    #include <stdio.h>
    DATABASE PERS = FILENAME "PERSONNEL";

    DECLARE_VARIABLE match_string SAME AS EMPLOYEES.LAST_NAME;

    main()
    {
    read_string(match_string,"R*",sizeof(match_string));

    READY PERS;
    START_TRANSACTION READ_ONLY;

    FOR E IN EMPLOYEES
       WITH E.LAST_NAME MATCHING match_string
       SORTED BY E.EMPLOYEE_ID
          printf ("%s  %s  %s",E.EMPLOYEE_ID,
                               E.LAST_NAME,
                               E.FIRST_NAME);
    END_FOR;

    COMMIT;
    FINISH;
    }

1.2  –  Pascal Example

    program matching (input,output);
    DATABASE PERS = FILENAME 'PERSONNEL';

    var
      match_string: VARYING [10] OF CHAR;
    begin

    match_string := 'R*';

    READY PERS;
    START_TRANSACTION READ_ONLY;

    FOR E IN EMPLOYEES
       WITH E.LAST_NAME MATCHING match_string
       SORTED BY E.EMPLOYEE_ID
          writeln (E.EMPLOYEE_ID,'     ', E.LAST_NAME, E.FIRST_NAME);
    END_FOR;

    COMMIT;
    FINISH;
    end.

2  –  Format

  (B)0matching-clause =

  qqq> value-expr qqqwqq>qqqqqqqwq> MATCHING qqq> match-expr qqqq>
                     mqq> NOT qqj

2.1  –  Format arguments

    value-expr             A value expression. A symbol or a string
                           of symbols used to calculate a value. When
                           you use a value expression in a statement,
                           Oracle Rdb calculates the value associated
                           with the expression and uses that value
                           when executing the statement.

    match-expr             A match expression. An expression in
                           quotation marks that is used to match a
                           pattern. Use the double quote character
                           (")  in C programs. Use the single quote
                           character (')  in Pascal programs. The
                           match expression can include the following
                           special symbols (called wildcards):

                           o  * Matches a string of zero or more
                              characters that maps onto its position

                           o  % Matches a single character that maps
                              onto its position
Close Help