Поиск

Строки

Строка — это последовательность символов, окруженная либо одинарными ('''), либо двойными ('') кавычками, например:
'строка' еще строка
Если SQL-режим сервера активизирует ANSI_QUOTES, то строковые литералы могут быть окружены только одинарными кавычками. Строки с двойными кавычками будут интерпретироваться как идентификаторы.
Начиная с MySQL 4.1.1, строковые литералы могут иметь назначенный им необяза­тельный набор символов и порядок сортировки:
[_имя_набора_символов] 'строка' [COLLATE имя_сопоставления] Примеры:
SELECT _latinl'строка';
SELECT _latinl'строка' COLLATE latinl_danish_ci;
Более подробную информацию о синтаксисе строк можно найти в разделе 3.3.7.

Внутри строки некоторые последовательности имеют специальное значение. Каждая из таких последовательностей начинается с обратной косой черты ('\'), называемой символом отмены. MySQL распознает следующие последовательности отмены:
SYS-PAGE-CONTENT Символ с ASCII-кодом О (NUL).
\' Символ одинарной кавычки (''').
\ Символ двойной кавычки ('').
\Ь Символ забоя.
\п Символ перевода строки.
\г Символ возврата каретки.
\t Символ табуляции.
\z Символ с ASCII-кодом 26 (Control-). Этот символ может быть закодирован как
'\z', чтобы позволить обойти проблему, связанную с тем, что ASCII 26 предназначен для обозначения конца файла в Windows. (ASCII 26 может вызвать проблемы, если вы попытаетесь применить команду вроде mysql имя_базы_данных имя_файла.)
\ Символ обратной косой черты ('\'). \% Символ '%'. См. комментарии ниже. \_ Символ '_'. См. комментарии ниже.
Эти последовательности чувствительны к регистру. Например, '\Ь' интерпретируется как символ забоя, тогда как '\В' - как символ 'В'.
Последовательности '\%' и '\_' используются при поиске литеральных включений экземпляров '%' и '_' в контексте сравнения с шаблонами, где в противном случае они могут рассматриваться как шаблонные символы. См. раздел 5.3.1. Следует отметить, что если вы используете '\%' и '\_' в других контекстах, то они возвращают строки '\%' и '\_\ анеЧ'и V-
Во всех последовательностях отмены обратная косая черта игнорируется. То есть за­щищенный им символ интерпретируется так, будто обратной косой черты нет.
Существует несколько способов включить знаки кавычек в строку:

  1. Одинарная кавычка (''') внутри строки, ограниченной одинарными кавычками,
    может записываться, как ''.
  2. Двойная кавычка внутри строки, ограниченной двойными кавычками, может быть
    записана, как''.
  3. Одинарная кавычка внутри строки, ограниченной двойными кавычками, не нуж­
    дается ни в какой дополнительной обработке и не требует отмены и удвоения. То
    же самое касается двойной кавычки, которая встречается внутри строки, ограни­
    ченной одинарными кавычками.

Следующие операторы SELECT демонстрируют, как работает отмена и помещение в кавычки:
mysq SELECT 'hello', 'hello', 'hello', 'hello\ 'Vhello';
+----------- +-------------- +------------------ +■------------- +------------- +
| hello | hello | hello | hel'lo | 'hello |

mysq SELECT hello, 'hello', hello, hello, V'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-интерфейс сам за ботится об отмене специальных символов.