Share via


Supporto di FOR XML per i tipi di dati stringa

In SQL Server 2000 gli spazi vuoti nei dati vengono restituiti esattamente come sono. A partire da SQL Server 2005, il codice XML generato dagli spazi vuoti FOR XML nei dati viene sostituito con delle entità.

Nell'esempio seguente viene creata la tabella T e vengono inseriti dati di esempio che includono i caratteri di avanzamento riga, ritorno a capo e tabulazione. L'istruzione SELECT recupera i dati dalla tabella.

CREATE TABLE T
(
  c1 int identity primary key,
  c2 varchar(100)
)
go
 
insert T (c2) values ('Special character 0xD for carriage return ' + convert(varchar(10), 0xD) + ' after carriage return')
insert T (c2) values ('Special character 0x9 for tab ' + convert(varchar(10), 0x9) + ' after tab' )
insert T (c2) values ('Special character 0xA for line feed ' + convert(varchar(10), 0xA) + ' after line feed')
go
SELECT * 
FROM T
FOR XML AUTO
go

Risultato:

  <T c1="1" c2="Special character 0xD for carriage return &#xD; after carriage return" />
  <T c1="2" c2="Special character 0x9 for tab &#x09; after tab" />
  <T c1="3" c2="Special character 0xA for line feed &#xA; after line feed" />

Dalla query precedente si noti quanto segue:

  • Il carattere di ritorno a capo nella prima riga viene sostituito con l'entità &#xD.

  • Il carattere di tabulazione nella seconda riga viene sostituito con l'entità &#x09.

  • Il carattere di avanzamento riga nella terza riga viene sostituito con l'entità &#xA.

In SQL Server 2000 gli spazi vuoti non vengono sostituiti con entità, si riceve dunque il risultato seguente:

<T c1="1" c2="Special character 0xD for carriage return  after carriage return"/>
<T c1="2" c2="Special character 0x9 for tab     after tab"/>
<T c1="3" c2="Special character 0xA for line feed 
 after line feed"/>