Опубликовано 24.01.2020
Обычно для экранирования спецсимволов в SQL-запросах используется символ обратной косой черты. Но символ апострофа можно экранировать вторым символом апострофа. Другими словами два символа апострофа подряд считаются одним экранированным апострофом. Примеры для MySQL:
INSERT INTO `text_table`(`text`) VALUES ('as''df');
Стандартный способ экранирования:
INSERT INTO `text_table`(`text`) VALUES ('as\'df');
Экранирование слеша:
INSERT INTO `text_table`(`text`) VALUES ('as\\df');
А вот экранировать слеш при помощи апострофа нельзя, такой запрос не сработает:
INSERT INTO `text_table`(`text`) VALUES ('as'\df');
В новых версиях Postgresql апостроф нельзя экранировать при помощи обратной косой черты.
При использовании SQL-запросов из программного кода лучше всего полагаться на подготовленные запросы. Это не только позволяет избавиться от мороки с экранированием символов но и защищает от SQL-инъекций.