STRING_ESCAPE (Transact-SQL)

Применимо к: SQL Server 2016 (13.x) и более поздних версий Azure SQL DatabaseУправляемый экземпляр SQL Azure

Экранирует специальные символы в тексте и возвращает текст с экранированными символами. STRING_ESCAPE — это детерминированная функция, впервые представленная в SQL Server 2016.

Соглашения о синтаксисе Transact-SQL

Синтаксис

STRING_ESCAPE( text , type )  

Аргументы

text
Выражениеnvarchar, представляющее объект, который следует экранировать.

type
Правила экранирования, которые будут применены. В настоящее время поддерживается значение 'json'.

Типы возвращаемых данных

Текст nvarchar(max) с экранированными специальными и управляющими символами. В настоящее время с помощью функции STRING_ESCAPE можно экранировать только специальные символы JSON, представленные в таблицах ниже.

Специальный символ Закодированная последовательность
Кавычки («») \"
Обратная косая черта (\) \\
Солидус (/) \/
Отмена \b
Перевод страницы \f
Новая строка \n
Возврат каретки \r
Горизонтальная табуляция \t
Управляющий символ Закодированная последовательность
CHAR(0) \u0000
CHAR(1) \u0001
... ...
CHAR(31) \u001f

Remarks

Примеры

A. Экранирование текста согласно правилам форматирования JSON

Приведенный ниже запрос экранирует специальные символы с использованием правил JSON и возвращает экранированный текст.

SELECT STRING_ESCAPE('\   /  
\\    "     ', 'json') AS escapedText;  

Результирующий набор:

escapedText  
-------------------------------------------------------------  
\\\t\/\n\\\\\t\"\t

Б. Форматирование объекта JSON

Приведенный ниже запрос создает текст в формате JSON на основе числовых и строковых переменных, а затем экранирует все специальные символы JSON в переменных.

SET @json = FORMATMESSAGE('{ "id": %d,"name": "%s", "surname": "%s" }',
    17, STRING_ESCAPE(@name,'json'), STRING_ESCAPE(@surname,'json') );  

См. также: