Поиск
Строки
Строка — это последовательность символов, окруженная либо одинарными ('''), либо двойными ('') кавычками, например:
'строка' еще строка
Если SQL-режим сервера активизирует ANSI_QUOTES, то строковые литералы могут быть окружены только одинарными кавычками. Строки с двойными кавычками будут интерпретироваться как идентификаторы.
Начиная с MySQL 4.1.1, строковые литералы могут иметь назначенный им необязательный набор символов и порядок сортировки:
[_имя_набора_символов] 'строка' [COLLATE имя_сопоставления] Примеры:
SELECT _latinl'строка';
SELECT _latinl'строка' COLLATE latinl_danish_ci;
Более подробную информацию о синтаксисе строк можно найти в разделе 3.3.7.
SYS-PAGE-CONTENT Символ с ASCII-кодом О (NUL).
\' Символ одинарной кавычки (''').
\ Символ двойной кавычки ('').
\Ь Символ забоя.
\п Символ перевода строки.
\г Символ возврата каретки.
\t Символ табуляции.
\z Символ с ASCII-кодом 26 (Control-). Этот символ может быть закодирован как
'\z', чтобы позволить обойти проблему, связанную с тем, что ASCII 26 предназначен для обозначения конца файла в Windows. (ASCII 26 может вызвать проблемы, если вы попытаетесь применить команду вроде mysql имя_базы_данных имя_файла.)
\ Символ обратной косой черты ('\'). \% Символ '%'. См. комментарии ниже. \_ Символ '_'. См. комментарии ниже.
Эти последовательности чувствительны к регистру. Например, '\Ь' интерпретируется как символ забоя, тогда как '\В' - как символ 'В'.
Последовательности '\%' и '\_' используются при поиске литеральных включений экземпляров '%' и '_' в контексте сравнения с шаблонами, где в противном случае они могут рассматриваться как шаблонные символы. См. раздел 5.3.1. Следует отметить, что если вы используете '\%' и '\_' в других контекстах, то они возвращают строки '\%' и '\_\ анеЧ'и V-
Во всех последовательностях отмены обратная косая черта игнорируется. То есть защищенный им символ интерпретируется так, будто обратной косой черты нет.
Существует несколько способов включить знаки кавычек в строку:
- Одинарная кавычка (''') внутри строки, ограниченной одинарными кавычками,
может записываться, как ''. - Двойная кавычка внутри строки, ограниченной двойными кавычками, может быть
записана, как''. - Одинарная кавычка внутри строки, ограниченной двойными кавычками, не нуж
дается ни в какой дополнительной обработке и не требует отмены и удвоения. То
же самое касается двойной кавычки, которая встречается внутри строки, ограни
ченной одинарными кавычками.
Следующие операторы SELECT демонстрируют, как работает отмена и помещение в кавычки:
mysq SELECT 'hello', 'hello', 'hello', 'hello\ 'Vhello';
+----------- +-------------- +------------------ +■------------- +------------- +
| hello | hello | hello | hel'lo | 'hello |
+-------- +----------- +-------------- +----- +----- +
I hello | 'hello' | hello | hello | hello |
mysq SELECT 'This\nIs\nFour\nLines';
+--------------- +
I This Is
Four Lines |
Если вы хотите вставить двоичные данные в строковый столбец (такой как BLOB), следующие символы должны быть представлены последовательностями отмены:
NULL Нулевой байт (ASCII 0). Представляется как Л 0' (обратная косая черта с последующим символом ASCII 'О').
\ Обратная косая черта (ASCII 92). Представляется как '\ V.
1 Одинарная кавычка (ASCII 39). Представляется, как *\ .
Двойная кавычка (ASCII 34). Представляется, как '\'.
При написании прикладных приложений к любой строке, которая может включать любой из этих специальных символов, должна быть правильно применена последовательность отмены, прежде чем строка будет использована в качестве значения данных в операторе SQL, который отправляется серверу MySQL. Это можно сделать двумя способами:
- Обработать строку функцией, которая отменяет специальные символы. На
пример, в API-интерфейсе С для этого можно использовать функцию mysql_real_escape_string(). Программный интерфейс Perl DBI предлагает ме
тод quote для преобразования специальных символов в корректные последовательности отмены. - В качестве альтернативы явной отмене специальных символов, многие программные интерфейсы MySQL предлагают возможность указания на месте за счет
вставки специальных маркеров в строку запроса, с последующим связыванием данных с ними, когда запрос отправляется. В этом случае API-интерфейс сам за ботится об отмене специальных символов.