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


STRING_ESCAPE (Transact-SQL)

Относится к: SQL Server 2016 (13.x) и более поздние версии Azure SQL DatabaseAzure SQL Managed InstanceSQL 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') );