STRING_ESCAPE (Transact-SQL)

Si applica a: SQL Server 2016 (13.x) e versioni successive database SQL di Azure AzureSQL Managed InstanceSQL analytics endpoint in Microsoft FabricWarehouse in Microsoft FabricSQL database in Microsoft Fabric

Aggiunge un carattere di escape prima di caratteri speciali nei testi e restituisce testo con caratteri preceduti da un carattere di escape. STRING_ESCAPE è una funzione deterministica introdotta per la prima volta in SQL Server 2016.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

STRING_ESCAPE( text , type )  

Argomenti

Testo

Espressionenvarchar che rappresenta l'oggetto di cui eseguire l'escape.

type

Regole di escape che verranno applicate. Il valore supportato è attualmente 'json'.

Tipi restituiti

Testo nvarchar (max) con caratteri speciali e di controllo preceduti da un carattere di escape.

Attualmente STRING_ESCAPE è possibile eseguire l'escape solo dei caratteri speciali JSON illustrati nelle tabelle seguenti.

Carattere speciale Sequenza codificata
Quotation mark (") \"
Reverse solidus (\\) \\
Solidus (/) \/
Backspace \b
Form feed \f
New line \n
Carriage return \r
Horizontal tab \t
Carattere di controllo Sequenza codificata
CHAR(0) \u0000
CHAR(1) \u0001
... ...
CHAR(31) \u001f

Osservazioni:

Esempi

R. Aggiungere un carattere di escape al testo in base alle regole di formattazione JSON

La query seguente fa precedere da un carattere di escape i caratteri speciali mediante regole JSON e restituisce testo preceduto da un carattere di escape.

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

Il set di risultati è il seguente.

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

B. Formattare un oggetto JSON

La query seguente crea testo JSON da variabili di stringa e numero e aggiunge un carattere di escape prima di qualsiasi carattere speciale JSON nelle variabili.

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