nvarchar字段中的不可见字符?

时间:2013-06-26 18:11:29

标签: sql-server-2008-r2

为什么charindex在SQL Server 2008 R2中的以下脚本中返回0以外的值?

--drop table #tmp
--go

create table #tmp (field1 nvarchar(50))
go
insert into #tmp values (N'Value 1')
go
insert into #tmp values (N'Value 2')
go
insert into #tmp values (N'Value 3')
go


DECLARE @i   INT;
DECLARE @c   NCHAR;
declare @nvc nvarchar(50) = N'Test Value';

SET @i = 128;


WHILE @i < 256
BEGIN
  SET @i = @i + 1;
  SET @c = nchar(@i);

  if exists (select 1 from #tmp t where charindex (@c, t.field1) > 0)
    print @c;
END

我的数据库实例上生成的输出(使用的排序规则:SQL_Latin1_General_CP1_CI_AS):

(1 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)
²
³
¹

1 个答案:

答案 0 :(得分:0)

字符'2'和'上标2'都具有相同的unicode数值2,所以我假设SQL服务器将它们视为基于unicode字符的这个组件的等效值而不仅仅是它看起来的方式