Экранирование строк SQL
Экранируйте текст для строки SQL в одинарных кавычках: удвоение кавычек (стандартный SQL) или обратные слэши MySQL. Можно обернуть результат в кавычки.
Каждая ' превращается в ''. Подходит для PostgreSQL, SQLite, SQL Server, Oracle и MySQL с NO_BACKSLASH_ESCAPES. В коде приложения используйте параметризованные запросы.
Работает полностью в вашем браузере. Ваши данные никуда не загружаются.
Похожие Инструменты
Просмотреть ВсеЧто такое Экранирование строк SQL?
Инструмент превращает исходное текстовое значение в вид, который можно поместить в строковый литерал SQL в одинарных кавычках. Стандартный режим удваивает каждую одинарную кавычку (O'Reilly → O''Reilly); режим MySQL использует экранирование обратной косой чертой, как mysql_real_escape_string(). Он предназначен для ручного написания SQL — в коде приложений используйте параметризованные запросы.
Как пользоваться Экранирование строк SQL
- Выберите Способ экранирования: стандартный SQL или MySQL.
- При желании включите Заключить результат в одинарные кавычки.
- Введите или вставьте исходное значение в поле ввода.
- Скопируйте экранированный результат в свой SQL.
Пример
O'Reilly \ x
O''Reilly \ x
Режим стандартного SQL: кавычки удваиваются, обратная косая черта остаётся.
Когда использовать Экранирование строк SQL
Используйте для разовых SQL-запросов, начальных данных и скриптов миграций с текстом, содержащим апострофы. Не полагайтесь на экранирование строк как на защиту от SQL-инъекций в приложениях — используйте подготовленные запросы с привязанными параметрами. Экранирование идентификаторов (имён таблиц и столбцов) — другая задача, здесь она не рассматривается.
Как работает Экранирование строк SQL
Стандартный SQL (ANSI; PostgreSQL, SQLite, SQL Server, Oracle и MySQL с NO_BACKSLASH_ESCAPES): каждая ' превращается в ''; обратные косые черты буквальны и не меняются. Режим MySQL (настройки MySQL/MariaDB по умолчанию): \0, перевод строки, возврат каретки, обратная косая черта, ', " и Ctrl+Z (0x1A) получают перед собой обратную косую черту, как в mysql_real_escape_string(). Переносы строк в стандартном режиме остаются настоящими переносами, что допустимо внутри литералов SQL.
Распространенные Случаи Использования
- Вставка имён вроде O'Reilly в ручной INSERT
- Написание скриптов начальных данных и миграций с текстом в кавычках
- Подготовка строковых литералов для дампов MySQL
- Понимание разницы между экранированием ANSI и MySQL
Примечание по Безопасности
Экранирование не заменяет подготовленные запросы. Всё выполняется локально, ничего не отправляется на сервер.
Часто Задаваемые Вопросы
Достаточно ли экранирования для защиты от SQL-инъекций?
Нет. Используйте параметризованные запросы: экранирование подвержено ошибкам и зависит от настроек сервера и кодировки.
Какой режим выбрать для PostgreSQL?
Стандартный SQL. Начиная с PostgreSQL 9.1, обратные косые черты в обычных строках буквальны.
Почему для MySQL нужно другое экранирование?
По умолчанию MySQL считает обратную косую черту символом экранирования внутри строк, поэтому её тоже нужно экранировать.