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') );