我正在进行从SQL Server 2005到2008迁移数据库的项目.
在测试过程中,我发现了一个不一致 按照BOL http://msdn.microsoft.com/en-us/library/ms186862(v=SQL.100).aspx(2008)和http://msdn.microsoft.com/en-us/library/ ms186862(v = SQL.90).aspx(2005)返回varchar.到目前为止两者都是一样的.但是如果我们传递给REPLACE函数列类型char则会出现差异.看看这段代码
declare @test table
(
testcharstring char(25)
)
insert into @test
select 'Hello'
union
select 'World'
union
select 'Hello world '
select
'"'+testcharstring+'"' as original
,'"'+replace(testcharstring,'a','A')+'"' as afterreplace
--,'"'+replace(rtrim(testcharstring),'a','A')+'"'
from @test
Run Code Online (Sandbox Code Playgroud)
SQL Server 2005的结果
original afterreplace
--------------------------- ---------------------------
"Hello " "Hello"
"Hello world " "Hello world"
"World " "World"
Run Code Online (Sandbox Code Playgroud)
SQL Server 2008的结果
original afterreplace
--------------------------- ---------------------------
"Hello " "Hello "
"Hello world " …Run Code Online (Sandbox Code Playgroud)