DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(mysql.info) string-comparison-functions

Info Catalog (mysql.info) string-functions (mysql.info) string-functions
 
 12.3.1 String Comparison Functions
 ----------------------------------
 
 If a string function is given a binary string as an argument, the
 resulting string is also a binary string. A number converted to a
 string is treated as a binary string. This affects only comparisons.
 
 Normally, if any expression in a string comparison is case sensitive,
 the comparison is performed in case-sensitive fashion.
 
    * `EXPR LIKE PAT [ESCAPE 'ESCAPE_CHAR']'
 
      Pattern matching using SQL simple regular expression comparison.
      Returns `1' (`TRUE') or `0' (`FALSE'). If either EXPR or PAT is
      `NULL', the result is `NULL'.
 
      The pattern need not be a literal string. For example, it can be
      specified as a string expression or table column.
 
      Per the SQL standard, `LIKE' performs matching on a per-character
      basis, thus it can produce results different from the `='
      comparison operator:
 
           mysql> SELECT 'a"' LIKE 'ae' COLLATE latin1_german2_ci;
           +-----------------------------------------+
           | 'a"' LIKE 'ae' COLLATE latin1_german2_ci |
           +-----------------------------------------+
           |                                       0 |
           +-----------------------------------------+
           mysql> SELECT 'a"' = 'ae' COLLATE latin1_german2_ci;
           +--------------------------------------+
           | 'a"' = 'ae' COLLATE latin1_german2_ci |
           +--------------------------------------+
           |                                    1 |
           +--------------------------------------+
 
      With `LIKE' you can use the following two wildcard characters in
      the pattern:
 
      *Character*   *Description*
      `%'           Matches any number of characters, even zero characters
      `_'           Matches exactly one character
 
           mysql> SELECT 'David!' LIKE 'David_';
                   -> 1
           mysql> SELECT 'David!' LIKE '%D%v%';
                   -> 1
 
      To test for literal instances of a wildcard character, precede it
      by the escape character. If you do not specify the `ESCAPE'
      character, ‘`\'’ is assumed.
 
      *String*      *Description*
      `\%'          Matches one ‘`%'’ character
      `\_'          Matches one ‘`_'’ character
 
           mysql> SELECT 'David!' LIKE 'David\_';
                   -> 0
           mysql> SELECT 'David_' LIKE 'David\_';
                   -> 1
 
      To specify a different escape character, use the `ESCAPE' clause:
 
           mysql> SELECT 'David_' LIKE 'David|_' ESCAPE '|';
                   -> 1
 
      The escape sequence should be empty or one character long.  As of
      MySQL 5.0.16, if the `NO_BACKSLASH_ESCAPES' SQL mode is enabled,
      the sequence cannot be empty.
 
      The following two statements illustrate that string comparisons
      are not case sensitive unless one of the operands is a binary
      string:
 
           mysql> SELECT 'abc' LIKE 'ABC';
                   -> 1
           mysql> SELECT 'abc' LIKE BINARY 'ABC';
                   -> 0
 
      In MySQL, `LIKE' is allowed on numeric expressions. (This is an
      extension to the standard SQL `LIKE'.)
 
           mysql> SELECT 10 LIKE '1%';
                   -> 1
 
      * Because MySQL uses C escape syntax in strings (for example,
      ‘`\n'’ to represent a newline character), you must double any
      ‘`\'’ that you use in `LIKE' strings. For example, to search
      for ‘`\n'’, specify it as ‘`\\n'’. To search for
      ‘`\'’, specify it as ‘`\\\\'’; this is because the
      backslashes are stripped once by the parser and again when the
      pattern match is made, leaving a single backslash to be matched
      against.
 
    * `EXPR NOT LIKE PAT [ESCAPE 'ESCAPE_CHAR']'
 
      This is the same as `NOT (EXPR LIKE PAT [ESCAPE 'ESCAPE_CHAR'])'.
 
    * `EXPR NOT REGEXP PAT', `EXPR NOT RLIKE PAT'
 
      This is the same as `NOT (EXPR REGEXP PAT)'.
 
    * `EXPR REGEXP PAT' `EXPR RLIKE PAT'
 
      Performs a pattern match of a string expression EXPR against a
      pattern PAT. The pattern can be an extended regular expression.
      The syntax for regular expressions is discussed in  regexp.
      Returns `1' if EXPR matches PAT; otherwise it returns `0'. If
      either EXPR or PAT is `NULL', the result is `NULL'.  `RLIKE' is a
      synonym for `REGEXP', provided for `mSQL' compatibility.
 
      The pattern need not be a literal string. For example, it can be
      specified as a string expression or table column.
 
      * Because MySQL uses the C escape syntax in strings (for
      example, ‘`\n'’ to represent the newline character), you must
      double any ‘`\'’ that you use in your `REGEXP' strings.
 
      `REGEXP' is not case sensitive, except when used with binary
      strings.
 
           mysql> SELECT 'Monty!' REGEXP 'm%y%%';
                   -> 0
           mysql> SELECT 'Monty!' REGEXP '.*';
                   -> 1
           mysql> SELECT 'new*\n*line' REGEXP 'new\\*.\\*line';
                   -> 1
           mysql> SELECT 'a' REGEXP 'A', 'a' REGEXP BINARY 'A';
                   -> 1  0
           mysql> SELECT 'a' REGEXP '^[a-d]';
                   -> 1
 
      `REGEXP' and `RLIKE' use the current character set when deciding
      the type of a character. The default is `latin1' (cp1252 West
      European). *Warning*: These operators are not multi-byte safe.
 
    * `STRCMP(EXPR1,EXPR2)'
 
      `STRCMP()' returns `0' if the strings are the same, `-1' if the
      first argument is smaller than the second according to the current
      sort order, and `1' otherwise.
 
           mysql> SELECT STRCMP('text', 'text2');
                   -> -1
           mysql> SELECT STRCMP('text2', 'text');
                   -> 1
           mysql> SELECT STRCMP('text', 'text');
                   -> 0
 
      `STRCMP()' uses the current character set when performing
      comparisons. This makes the default comparison behavior case
      insensitive unless one or both of the operands are binary strings.
 
Info Catalog (mysql.info) string-functions (mysql.info) string-functions
automatically generated byinfo2html