Поддержка FOR XML для строковых типов данных
В SQL Server 2000 пробельные символы в данных возвращались в неизменном виде. В SQL Server 2005 пробельные символы XML-кода, формируемого инструкцией FOR XML, преобразуются в сущности.
В следующем примере создается образец таблицы T, в который вставляются данные, содержащие символы перевода строки, возврата каретки и табуляции. Инструкция SELECT получает данные из таблицы.
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
Результат:
<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" />
Обратите внимание на следующие особенности предыдущего запроса.
- Символ возврата каретки в первой строке представлен в виде сущности 
.
- Символ табуляции во второй строке представлен в виде сущности 	.
- Символ перевода строки в третьей строке представлен в виде сущности 
.
В SQL Server 2000 был бы получен следующий результат, в котором пробельные символы в сущности не преобразуются:
<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"/>
См. также
Справочник
Поддержка FOR XML для различных типов данных SQL Server