Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Относится к: SQL Server 2016 (13.x) и более поздние версии
Azure SQL Database
Azure SQL Managed Instance
SQL Database в Microsoft Fabric
Экранирует специальные символы в тексте и возвращает текст с экранированными символами.
STRING_ESCAPE — детерминированная функция, представленная в SQL Server 2016.
Соглашения о синтаксисе Transact-SQL
Синтаксис
STRING_ESCAPE( text , type )
Аргументы
text
Выражениеnvarchar, представляющее объект, который должен быть экранирован.
type
Правила экранирования, которые будут применены. В настоящее время поддерживается значение 'json'.
Типы возвращаемых данных
Текст nvarchar(max) с экранированными специальными и управляющими символами.
STRING_ESCAPE В настоящее время можно использовать только специальные символы JSON, отображаемые в следующих таблицах.
| Специальный знак | Закодированная последовательность |
|---|---|
Quotation mark (") |
\" |
Reverse solidus (\\) |
\\ |
Solidus (/) |
\/ |
Backspace |
\b |
Form feed |
\f |
New line |
\n |
Carriage return |
\r |
Horizontal tab |
\t |
| Управляющий символ | Закодированная последовательность |
|---|---|
CHAR(0) |
\u0000 |
CHAR(1) |
\u0001 |
... |
... |
CHAR(31) |
\u001f |
Замечания
Примеры
А. Экранирование текста согласно правилам форматирования JSON
Приведенный ниже запрос экранирует специальные символы с использованием правил JSON и возвращает экранированный текст.
SELECT STRING_ESCAPE('\ /
\\ " ', 'json') AS escapedText;
Вот результирующий набор.
escapedText
-------------------------------------------------------------
\\\t\/\n\\\\\t\"\t
B. Форматирование объекта JSON
Приведенный ниже запрос создает текст в формате JSON на основе числовых и строковых переменных, а затем экранирует все специальные символы JSON в переменных.
SET @json = FORMATMESSAGE('{ "id": %d,"name": "%s", "surname": "%s" }',
17, STRING_ESCAPE(@name,'json'), STRING_ESCAPE(@surname,'json') );