Строка — это последовательность символов, окруженная либо одинарными (”’), либо двойными (”) кавычками, например:
‘строка’ еще строка
Если 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 ‘ThisnIsnFournLines’;
+————— +
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-интерфейс сам за ботится об отмене специальных символов.