PRB: Proper Handling of the Escape Sequence \<cr><lf> (164291)
The information in this article applies to:
- Microsoft SQL Server 6.5
- Microsoft SQL Server 7.0
- Microsoft SQL Server 2000 (all editions)
This article was previously published under Q164291 SYMPTOMS
Microsoft SQL Server identifies a Transact-SQL command containing the
backslash (\) followed by the carriage return (0x0d) and line feed
(0x0a) as an escape sequence.
The following example demonstrates the behavior:
use pubs
go
drop table tblTest
go
create table tblTest
(
strData varchar(30)
)
go
insert into tblTest values ("c:\
X")
go
insert into tblTest values ("c:\\
X")
go
select * from tblTest
go
strData
------------------------------
c:X
c:\
X
The first insert contains the \<cr><lf> sequence, and when returned from
SQL Server, is c:X. The escape sequence is scanned out by the SQL Server.
However, replacing the \<cr><lf> with \\<cr><lf><cr><lf>, as in the second
insert, yields the expected results.
CAUSE
SQL Server sees the sequences \<cr><lf> (\ + 0d + 0a) and \<lf> (\ + 0a) as escape sequences.
WORKAROUND
To work around this problem, correct the Transact-SQL string, replacing
the \<cr><lf> with \\<cr><lf><cr><lf> before sending the query to the SQL
Server.
Modification Type: | Minor | Last Reviewed: | 3/1/2005 |
---|
Keywords: | kbBug kbprb KB164291 |
---|
|