Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 带有like子句(N';%%ө;ө;%%';)的Unicode谓词返回所有行_Sql_Sql Server - Fatal编程技术网

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

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查询中使用以下条件时

[FieldName]类似于N“%өө%”

在这里,字段名可以替换为任何表中的任何列。排序规则为
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