Is it possible to store non-alphanumeric characters (more specifically line break characters) in a XML data type?
The code below illustrates my problem:
declare @a xml
declare @b nvarchar(max)
set @b = '<Entry Attrib="1'+CHAR(13)+'2" />'
print @b
set @a=convert(xml,@b,1)
set @b=convert(nvarchar, @a,1)
print @b
The output is:
<Entry Attrib="1
2" />
<Entry Attrib="1 2"/>
Is there any way I could keep the line break intact?
My actual problem is to store the value in a table (rather than a local variable), so maybe there's some setting for the corresponding XML column in my table that would do the job?
It would not be possible. The XML Data type is stored as an XML DOM Tree, not a string.
You would have to store it as a varchar instead if you want to keep whitespace.
White space inside of an XML tag is not considered significant according to the XML specification, and will not be preserved. White space outside of the element will however:
will output:
My answer in the XSLT context should apply here:
So this might be what you are looking for: