Поделиться через


STRING_ESCAPE (Transact-SQL)

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

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

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

Синтаксис

STRING_ESCAPE( text , type )  

Аргументы

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

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

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

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

Специальный знак Закодированная последовательность
Кавычки («») \"
Обратная косая черта (\) \\
Солидус (/) \/
Backspace \b
Подача страницы \f
Новая строка \n
Возврат каретки \r
Горизонтальная табуляция \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') );  

См. также