Spec-Zone .ru
спецификации, руководства, описания, API

9.1.1. Строковые литералы

Строка является последовательностью байтов или символов, включенных в пределах любой одинарной кавычки ("'") или двойная кавычка (""") символы. Примеры:

'a string'"another string"

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

'a string''a' ' ' 'string'

Если ANSI_QUOTES Режим SQL включается, строковые литералы могут быть заключены в кавычки только в пределах единственных кавычек, потому что строка, заключенная в кавычки в пределах двойных кавычек, интерпретируется как идентификатор.

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

У строковых литералов может быть дополнительный набор символов introducer и COLLATE пункт:

[_charset_name]'string' [COLLATE collation_name]

Примеры:

SELECT _latin1'string';SELECT _latin1'string' COLLATE latin1_danish_ci;

Можно использовать N'literal' (или n'literal') создать строку в наборе национального характера. Эти операторы эквивалентны:

SELECT N'some text';SELECT n'some text';SELECT _utf8'some text';

Для получения дополнительной информации об этих формах строкового синтаксиса, см. Раздел 10.1.3.5, "Набор символов Литерала символьной строки и Сопоставление", и Раздел 10.1.3.6, "Набор Национального характера".

В пределах строки у определенных последовательностей нет особого значения если NO_BACKSLASH_ESCAPES Режим SQL включается. Каждая из этих последовательностей начинается с наклонной черты влево ("\"), известный как символ ESC. MySQL распознает escape-последовательности, показанные в Таблице 9.1, "Специальные Управляющие последовательности символов". Для всех других escape-последовательностей игнорируется наклонная черта влево. Таким образом, оставленный символ интерпретируется, как будто его не оставили. Например,"\x"только"x". Эти последовательности являются чувствительными к регистру. Например,"\b"интерпретируется как клавиша Backspace, но"\B"интерпретируется как"B". Обработка Escape делается согласно набору символов, обозначенному character_set_connection системная переменная. Это - истина даже для строк, которым предшествует introducer, который указывает на различный набор символов, как обсуждено в Разделе 10.1.3.5, "Набор символов Литерала символьной строки и Сопоставление".

Таблица 9.1. Специальные Управляющие последовательности символов

Escape-последовательность Символ, Представленный Последовательностью
\0 ASCII NUL (0x00) символ.
\' Одинарная кавычка ("'") символ.
\" Двойная кавычка (" "") символ.
\b Символ возврата.
\n Новая строка (перевод строки) символ.
\r Символ возврата каретки.
\t Символ вкладки.
\Z ASCII 26 (Control+Z). См., что примечание следует за таблицей.
\\ Наклонная черта влево ("\") символ.
\% "%"символ. См., что примечание следует за таблицей.
\_ "_"символ. См., что примечание следует за thetable.

ASCII 26 символов может быть закодирован как"\Z"чтобы позволить Вам работать вокруг проблемы, что ASCII 26 стендов для КОНЦА ФАЙЛА на Windows. ASCII 26 в пределах файла вызывает проблемы, если Вы пытаетесь использовать mysql db_name < file_name.

"\%"и"\_"последовательности используются, чтобы искать литеральные экземпляры"%"и"_"в контекстах сопоставления с образцом, где они были бы иначе интерпретированы как подстановочные символы. См. описание LIKE оператор в Разделе 12.5.1, "Функции Сравнения строк". Если Вы используете"\%"или"\_"за пределами контекстов сопоставления с образцом они оценивают к строкам"\%"и"\_", не к"%"и"_".

Есть несколько способов включать символы кавычек в пределах строки:

Следующий 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';+--------------------+| ThisIsFourLines |+--------------------+mysql> SELECT 'disappearing\ backslash';+------------------------+| disappearing backslash |+------------------------+

Если Вы хотите вставить двоичных данных в строковый столбец (таких как a BLOB столбец), следует представить определенные символы escape-последовательностями. Наклонная черта влево ("\"), и символа кавычки, используемого, чтобы заключить строку в кавычки, нужно оставить. В определенных клиентских средах может также быть необходимо выйти NUL или Control+Z. mysql клиент усекает заключенные в кавычки строки, содержащие NUL символы, если их не оставляют, и Control+Z, могут быть взяты для КОНЦА ФАЙЛА на Windows, если не вышел. Для escape-последовательностей, которые представляют каждый из этих символов, см. Таблицу 9.1, "Специальные Управляющие последовательности символов".

При записи прикладных программ любой строки, которая могла бы содержать любой из этих специальных символов, нужно должным образом оставить прежде, чем строка используется в качестве значения данных в SQL-операторе, который отправляется серверу MySQL. Можно сделать это двумя способами: