В MySQL существует несколько базовых типов данных. В данной статье будет подробно рассмотрен строчный тип данных. Мы разберем различные способы его задания и подводные камни, которые могут встретиться при дальнейшей работе с базами данных.
Как задаются строки?
Чтобы сервер при обработке кода опознал в коде строку достаточно просто несколько произвольных символов заключить в кавычки.
Обычно не имеет значения какого рода кавычки будут использованы: одинарные («’») или двойные («”»), но из этого правила есть исключение — стандарт ANSI SQL допускает использование исключительно одинарных кавычек.
Какие есть возможности для форматирования строк?
Для удобства представления информации в строках существует ряд специальных символов, которые позволяют форматировать данные непосредственно внутри строки. К ним относят:
- \’ — экранируя кавыку обратным слешем мы можем вывести ее внутри строки, не разрывая саму переменную
- \” — действие аналогично предыдущему спецсимволу
- \n — перенос строки
- \b — перевод символа на одну позицию назад
- \t - табуляция
- \\ - позволяет вывести внутри строки обратный слеш
- \% - дает возможность вывести символ процентов просто как символ, а не как групповой символ со специальным значением
- \’_’ - дает возможность вывести символ нижнего подчеркивания просто как символ, а не как групповой символ со специальным значением
Помимо уже рассмотренного способа с экранированием символов кавычек обратным слешем существует еще одна возможность внедрить кавычку внутрь строки: для одинарной кавычки это последовательность символов `'''; для двойной `""'.
Эти последовательности символов отлично распознаются системой и не требуют специальной предварительной обработки, по типу экранирования обратным слешем.
А теперь то же самое в примерах:
mysql> SELECT 'test', '"test"', '""test""', 'te''st', '\'test'; +-------+---------+-----------+--------+--------+ | test | "test" | ""test"" | te'st | 'test | +-------+---------+-----------+--------+--------+ mysql> SELECT "test", "'test'", "''test''", "te""st", "\"test"; +-------+---------+-----------+--------+--------+ | test | 'test' | ''test'' | te"st | "test | +-------+---------+-----------+--------+--------+ mysql> SELECT "Line\nOne\nTwo"; +--------------------+ | Line One Two | +--------------------+
Помимо вышеперечисленных возможностей использования в строках спецсимволов, в API часто существуют свои символы-заменители форматирования текста, для большего удобства разработчиков.