Partilhar via


Suporte a FOR XML para tipos de dados de cadeia de caracteres

No SQL Server 2000, espaços em branco eram retornados exatamente como estavam. A partir do SQL Server 2005, o XML gerado pelos caracteres de espaço em branco do FOR XML nos dados tem a entidade definida.

O exemplo a seguir cria a tabela de exemplo T e insere dados de exemplo que incluem caracteres de alimentação de linha, retorno de carro e tab. A instrução SELECT recupera os dados da tabela.

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

Este é o resultado:

  <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" />

Observe o seguinte na consulta anterior:

  • O retorno de carro na primeira linha tem a entidade definida como &#xD.

  • O caractere tab na segunda linha tem a entidade definida como &#x09.

  • O caractere de alimentação de linha na terceira linha tem a entidade definida como &#xA.

No SQL Server 2000, você receberia o resultado a seguir, porque os espaços em branco não tinham a entidade definida:

<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"/>