带有like子句(N'%өө%')的Unicode谓词将返回所有行

时间:2017-09-13 07:02:46

标签: sql sql-server

当我在SQL查询中使用以下条件

  

[FieldName],如N'%өө%'

此处的字段名称可以替换为您拥有的任何表格中的任何列。\ n \ nCollat​​ion为SQL_Latin1_General_CP1_CI_AS

我在SQLServer express,SQLServer 2012,2016上测试了任何类型的字段。

关于为什么会发生这种情况的任何想法?

有人可以确认一下吗?

下面的

是一个简单的复制品:

create table dbo.test111
(
id int
)

insert into dbo.test111
select ROW_NUMBER() over (order by (Select null))
from
sys.objects s
cross join
sys.objects s1

select * from dbo.test111 where id like
 N'%өө%'

1 个答案:

答案 0 :(得分:4)

在您的情况下,您需要对Supplementary Characters

使用排序规则
[FieldName] like N'%өө%' collate Latin1_General_100_CI_AS_SC

这应该产生预期的结果。

探索演示并看到删除排序规则会导致返回所有记录。

Demo