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.1 Структура языка :: 6.1.1 Литералы: представление строк и чисел :: 6.1.1.1 Cтроки

  • Overview
  • MySQL Reference Manual
  • MaxDB Documentation
  • Connectors

Search the MySQL manual:


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

  • 6.1.1 Литералы: представление строк и чисел
  • 6.1.1.1 Cтроки
  • 6.1.1.2 Числа
  • 6.1.1.3 Шестнадцатеричные величины
  • 6.1.1.4 Значения NULL

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.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 Раздел 6.3.2.1, «Функции сравнения строк»).

  • \'_'

    Символ подчеркивания ‘_’. Используется для поиска копий литерала ‘_’ в контекстах, где выражение ‘_’ в противном случае интерпретировалось бы как групповой символ (see Раздел 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 Раздел 8.4.2, «Обзор функций интерфейса C»). При программировании на Perl можно использовать метод quote из пакета DBI для превращения специальных символов в соответствующие escape-последовательности (see Раздел 8.2.2, «Интерфейс DBI»).

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

В качестве альтернативы многие интерфейсы прикладного программирования (API) для 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!