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

6.1.1.1 Cтроки

    6.1.1.1 Cтроки

    Строка представляет собой последовательность символов, заключенных либо в одинарные кавычки (`'') - апострофы, либо в двойные кавычки (`"'). При использовании диалекта ANSI SQL допустимы только одинарные кавычки. Например:

    'a string'
    "another string"
    

    Внутри строки некоторые последовательности символов имеют специальное назначение. Каждая из этих последовательностей начинается обратным слешем (`\'), известным как escape-символ или символ перехода. MySQL распознает следующие escape-последовательности:

    \0
    Символ 0 (NUL) в ASCII коде.
    \'
    Символ одиночной кавычки (`'').
    \"
    Символ двойной кавычки (`"').
    \b
    Возврат на один символ.
    \n
    Символ новой строки (перевода строки).
    \r
    Символ перевода каретки.
    \t
    Символ табуляции.
    \z
    Символ (Control-Z) таблицы ASCII(26). Данный символ можно закодировать, чтобы обойти проблему, заключающуюся в том, что под Windows ASCII(26) означает конец файла (проблемы возникают при использовании ASCII(26) в выражении mysql database < filename).
    \\
    Символ обратного слеша.
    \%
    Символ процентов `%'. Используется для поиска копий литерала `%' в контекстах, где выражение `%' в противном случае интерпретировалось бы как групповой символ (see section 6.3.2.1 Функции сравнения строк).
    \`_'
    Символ подчеркивания `_'. Используется для поиска копий литерала `_' в контекстах, где выражение `_' в противном случае интерпретировалось бы как групповой символ (see section 6.3.2.1 Функции сравнения строк).

    Обратите внимание на то, что при использовании `\%' или `\_' в контекстах некоторых строк будут возвращаться значения строк `\%' и `\_', а не `%' и `_'.

    Существует несколько способов включить кавычки в строку:

    • Одиночная кавычка (апостроф) `'' внутри строки, заключенной в кавычки `'', может быть записана как `'''.
    • Двойная кавычка `"' внутри строки, заключенной в двойные кавычки `"', может быть записана как `""'.
    • Можно предварить символ кавычки символом экранирования (`\').
    • Для символа `'' внутри строки, заключенной в двойные кавычки, не требуется специальной обработки; его также не требуется дублировать или предварять обратным слешем. Точно так же не требует специальной обработки двойная кавычка `"' внутри строки, заключенной в одиночные кавычки `''.

    Ниже показаны возможные варианты применения кавычек и escape-символа на примерах выполнения команды SELECT:

    mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello';
    +-------+---------+-----------+--------+--------+
    | hello | "hello" | ""hello"" | hel'lo | 'hello |
    +-------+---------+-----------+--------+--------+
    
    mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello";
    +-------+---------+-----------+--------+--------+
    | hello | 'hello' | ''hello'' | hel"lo | "hello |
    +-------+---------+-----------+--------+--------+
    
    mysql> SELECT "This\nIs\nFour\nlines";
    +--------------------+
    | This
    Is
    Four
    lines |
    +--------------------+
    

    Если необходимо вставить в строку двоичные данные (такие как BLOB), следующие символы должны быть представлены как escape-последовательности:

    NUL
    ASCII 0. Необходимо представлять в виде `\0' (обратный слеш и символ ASCII `0').
    \
    ASCII 92, обратный слеш. Представляется как `\\'.
    '
    ASCII 39, единичная кавычка. Представляется как `\''.
    "
    ASCII 34, двойная кавычка. Представляется как `\"'.

    При написании программы на языке C для добавления символов экранирования в команде INSERT можно использовать функцию mysql_real_escape_string() из C API (see section 8.4.2 Обзор функций интерфейса C). При программировании на Perl можно использовать метод quote из пакета DBI для превращения специальных символов в соответствующие escape-последовательности (see section 8.2.2 Интерфейс DBI).

    Не следует забывать, что указанное свойство escape-символа должно использоваться во всех строках, которые могут содержать любые специальные символы, перечисленные выше.

    В качестве альтернативы многие интерфейсы прикладного программирования (API) для MySQL предоставляют определенную возможность использования символов-заменителей, что позволяет вносить специальные маркеры в строку запроса и затем связывать с ними значения данных при выдаче результатов запроса.




Наш баннер
Вы можете установить наш баннер на своем сайте или блоге, скопировав этот код:
RSS новости