Sql 带有like子句(N';%%ө;ө;%%';)的Unicode谓词返回所有行
当我在SQL查询中使用以下条件时 [FieldName]类似于N“%өө%” 在这里,字段名可以替换为任何表中的任何列。排序规则为Sql 带有like子句(N';%%ө;ө;%%';)的Unicode谓词返回所有行,sql,sql-server,Sql,Sql Server,当我在SQL查询中使用以下条件时 [FieldName]类似于N“%өө%” 在这里,字段名可以替换为任何表中的任何列。排序规则为SQL\u Latin1\u General\u CP1\u CI\u AS 我在SQLServerExpress、SQLServer20122016上测试了任何类型的字段 你知道为什么会这样吗 有人能确认一下这对你来说是否一样吗 下面是一个简单的复制: create table dbo.test111 ( id int ) insert into dbo.test
SQL\u Latin1\u General\u CP1\u CI\u AS
我在SQLServerExpress、SQLServer20122016上测试了任何类型的字段
你知道为什么会这样吗
有人能确认一下这对你来说是否一样吗
下面是一个简单的复制:
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'%өө%'
在您的情况下,您需要为 这应该会产生预期的结果 浏览演示并查看删除排序规则会导致返回所有记录
这个字符是什么?每个记录都有一个吗?你的数据库使用什么排序规则?@Filburt我想你已经知道了…所以你是说,
өө
正在排序到其他一些(普通)字符?@TimBiegeleisen首先要问的是是否比较字符数据。相关:这是否意味着如果我将我的数据库默认排序规则转换为Latin1_General_100_CI_AS_SC,那么我就不必每次都使用排序规则?是的,如果你想适应这个数据库级别,你应该更改你的数据库排序规则。(无需更改服务器默认排序规则)@Filburt谢谢您的回答。我唯一不能理解的是:我读到了关于补充字符的文章,他们写道“码点值大于0xFFFF的字符需要两个连续的16位字。这些字符称为补充字符,两个连续的16位字称为代理对”。没关系,但OP字符的代码点1257(4E9)小于EEEE,那么你是怎么知道它是补充的呢?@THEn>>>这是否意味着如果我将我的数据库默认排序规则转换为Latin1_General_100_CI_AS_SC,那么我就不必每次都使用排序规则了?@sepupic我承认我没有检查代码点,只是根据外观猜测而已。我想我可以从这个链接中学到更多。
[FieldName] like N'%өө%' collate Latin1_General_100_CI_AS_SC