Spec-Zone .ru
спецификации, руководства, описания, API
|
Строка является последовательностью байтов или символов, включенных в пределах любой одинарной кавычки ("'
") или двойная
кавычка (""
")
символы. Примеры:
'a string'"another string"
Заключенные в кавычки строки, помещенные друг рядом с другом, связываются к единственной строке. Следующие строки эквивалентны:
'a string''a' ' ' 'string'
Если ANSI_QUOTES
Режим SQL включается, строковые литералы могут быть заключены в
кавычки только в пределах единственных кавычек, потому что строка, заключенная в кавычки в пределах двойных
кавычек, интерпретируется как идентификатор.
Двоичная строка является строкой байтов, у которой нет никакого набора символов или сопоставления. Недвоичная строка является строкой символов, у которой есть набор символов и сопоставление. Для обоих типов строк сравнения основаны на числовых значениях строкового модуля. Для двоичных строк модуль является байтом. Для недвоичных строк модуль является символом, и некоторые наборы символов поддерживают многобайтовые символы. Символьное упорядочивание значения является функцией строкового сопоставления.
У строковых литералов может быть дополнительный набор символов introducer и COLLATE
пункт:
[_charset_name
]'string
' [COLLATEcollation_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. Специальные Управляющие последовательности символов
ASCII 26 символов может быть закодирован как"\Z
"чтобы
позволить Вам работать вокруг проблемы, что ASCII 26 стендов для КОНЦА ФАЙЛА на Windows. ASCII 26 в пределах
файла вызывает проблемы, если Вы пытаетесь использовать mysql
. db_name
< file_name
"\%
"и"\_
"последовательности
используются, чтобы искать литеральные экземпляры"%
"и"_
"в контекстах сопоставления с образцом, где они были бы иначе
интерпретированы как подстановочные символы. См. описание LIKE
оператор в Разделе
12.5.1, "Функции Сравнения строк". Если Вы используете"\%
"или"\_
"за пределами контекстов сопоставления с
образцом они оценивают к строкам"\%
"и"\_
", не к"%
"и"_
".
Есть несколько способов включать символы кавычек в пределах строки:
"'
"в
строке, заключенной в кавычки с"'
"может быть записан как"''
".
"
"
"в строке, заключенной в кавычки с""
"может быть записан как"
""
".
Предшествуйте символу кавычки символом ESC ("\
").
"'
"в
строке, заключенной в кавычки с"
"
"потребности никакой специальный режим и не должны быть удвоены или
оставлены. Таким же образом,"
"
"в строке, заключенной в кавычки с"'
"потребности никакой специальный
режим.
Следующий 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. Можно сделать это двумя способами:
Обработайте строку с функцией, которая выходит из специальных символов. В программе
C можно использовать mysql_real_escape_string()
C API-функция к символам ESC. См. Раздел 21.8.7.54,"mysql_real_escape_string()
". В пределах SQL-операторов, которые
создают другие SQL-операторы, можно использовать QUOTE()
функция. Perl интерфейс DBI обеспечивает a quote
метод, чтобы преобразовать специальные символы в надлежащие
escape-последовательности. См. Раздел 21.10, "API Perl
MySQL". Другие интерфейсы языка могут обеспечить подобную возможность.
Как альтернатива явному выходу из специальных символов, много API MySQL обеспечивают возможность заполнителя, которая позволяет Вам вставить специальные маркеры в строку оператора, и затем связать значения данных с ними, когда Вы делаете заявление. В этом случае API заботится о выходе из специальных символов в значениях для Вас.