MySQL

:: DEVELOPER ZONE

Login / Register

  • MySQL.com
  • Developer Zone
  • Partners
  • Online Shop
  • Downloads
  • Documentation
  • Forums
  • Lists
  • Bugs
  • Events
  • User Groups
  • Guilds
  • Blogs
  • Support
  • Resources
  • Books
  • FAQ

Справочное руководство по MySQL 4.0. :: 6 Справочник по языку MySQL :: 6.3 Функции, используемые в операторах SELECT и WHERE :: 6.3.2 Строковые функции :: 6.3.2.1 Функции сравнения строк

  • Overview
  • MySQL Reference Manual
  • MaxDB Documentation
  • Connectors

Search the MySQL manual:


  • Справочное руководство по MySQL 4.0.

  • 6.3.2 Строковые функции
  • 6.3.2.1 Функции сравнения строк
  • 6.3.2.2 Чувствительность к регистру

Get the MySQL Language Reference and MySQL Administrator's Guide from MySQL Press!


Additional languages

  • German


Learn about new MySQL releases, technical articles, events and more.

Subscribe to the monthly MySQL Newsletter!


Previous / Next / Up / Table of Contents

6.3.2.1. Функции сравнения строк

Обычно если при выполнении сравнения строк одно из выражений является зависимым от регистра, то сравнение выполняется также с учетом регистра.

  • expr LIKE pat [ESCAPE 'escape-char']

    Функция производит сравнение с шаблоном, используя операции сравнения простых регулярных выражений в SQL. Возвращает 1 (ИСТИНА) или 0 (ЛОЖЬ). Выражение LIKE предусматривает использование следующих двух шаблонных символов в pat:

    Символ Описание
    % Соответствует любому количеству символов, даже нулевых
    _ Соответствует ровно одному символу

    mysql> SELECT 'David!' LIKE 'David_';
            -> 1
    mysql> SELECT 'David!' LIKE '%D%v%';
            -> 1
    mysql> select TRUNCATE(-1.999,1);
            -> -1.9
    

    Начиная с MySQL 3.23.51 все числа округляются к нулю.

    Если D является негативным, то тогда вся часть числа округляется к нулю.

    mysql> select truncate(122,-2);
           -> 100
    

    Если требуется исследовать литералы при помощи шаблонного символа, следует предварить шаблонный символ экранирующим символом. Если экранирующий символ конкретно не указывается, то подразумевается применение символа ‘\’:

    Строка Описание
    \% Соответствует одному символу ‘%’
    \_ Соответствует одному символу ‘_’

    mysql> SELECT 'David!' LIKE 'David\_';
            -> 0
    
    mysql> SELECT 'David_' LIKE 'David\_';
            -> 1
    

    Для указания конкретного экранирующего символа используется выражение ESCAPE:

    mysql> SELECT 'David_' LIKE 'David|_' ESCAPE '|';
            -> 1
    

    В следующих двух примерах показано, что сравнение строк производится с учетом регистра, если ни один из операндов не является строкой с двоичными данными:

    mysql> SELECT 'abc' LIKE 'ABC';
            -> 1
    mysql> SELECT 'abc' LIKE BINARY 'ABC';
            -> 0
    

    В функции LIKE допускаются даже числовые выражения! (Это расширение MySQL по сравнению с ANSI SQL LIKE.)

    mysql> SELECT 10 LIKE '1%';
            -> 1
    

    Примечание: поскольку в MySQL применяются правила экранирования в строках, применяемые в языке C (например, '\n'), необходимо дублировать все символы ‘\’, используемые в строках функции LIKE. Например, для поиска сочетания символов '\n' его необходимо указать как '\\n'. Чтобы выполнить поиск символа ‘\’, он должен быть указан как '\\\\' (обратные слеши удаляются дважды: сначала синтаксическим анализатором, а потом - при выполнении сравнения с шаблоном, таким образом остается только один обратный слеш, который и будет обрабатываться).

  • expr NOT LIKE pat [ESCAPE 'escape-char']

    То же, что и NOT (expr LIKE pat [ESCAPE 'escape-char']).

  • expr SOUNDS LIKE expr

    Тоже самое что и SOUNDEX(expr)=SOUNDEX(expr) (доступно в версии 4.1 или новее).

  • expr REGEXP pat, expr RLIKE pat

    Выполняет сравнение строкового выражения expr с шаблоном pat. Шаблон может представлять собой расширенное регулярное выражение. See Приложение G, Регулярные выражения в MySQL. Возвращает 1, если expr соответствует pat, в противном случае - 0. Функция RLIKE является синонимом для REGEXP, она предусмотрена для совместимости с mSQL. Примечание: поскольку в MySQL используются правила экранирования в строках, применяемые в языке C (например, '\n'), необходимо дублировать все символы ‘\’, используемые в строках функции REGEXP. Что касается версии MySQL 3.23.4, функция REGEXP является независимой от регистра для нормальных строк (т.е. строк не с двоичными данными):

    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 и RLIKE используется текущий набор символов (ISO-8859-1 Latin1 по умолчанию),

  • expr NOT REGEXP pat, expr NOT RLIKE pat

    То же, что и NOT (expr REGEXP pat).

  • STRCMP(expr1,expr2)

    Функция STRCMP() возвращает: 0, если строки идентичны, -1 - если первый аргумент меньше второго (в соответствии с имеющимся порядком сортировки), и 1 - в остальных случаях:

    mysql> SELECT STRCMP('text', 'text2');
            -> -1
    
    mysql> SELECT STRCMP('text2', 'text');
            -> 1
    
    mysql> SELECT STRCMP('text', 'text');
            -> 0
    

  • MATCH (col1,col2,...) AGAINST (expr), MATCH (col1,col2,...) AGAINST (expr IN BOOLEAN MODE)

    Функция MATCH ... AGAINST() используется для полнотекстового поиска и возвращает величину релевантности - степень сходства между текстом в столбцах (col1,col2,...) и запросом expr. Величина релевантности представляет собой положительное число с плавающей точкой. Нулевая релевантность означает отсутствие сходства. Функция MATCH ... AGAINST() работает в версиях MySQL 3.23.23 или более поздних. Расширение IN BOOLEAN MODE было добавлено в версии 4.0.1. Более подробное описание и примеры использования приведены в разделе Раздел 6.8, «Полнотекстовый поиск в MySQL».


This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

Top / Previous / Next / Up / Table of Contents

© 1995-2005 MySQL AB. All rights reserved.

  • About MySQL
  • Careers
  • Site Map
  • Contact Us
  • Legal
  • Privacy Policy
  • Trademark Info
  • No Software Patents!