搜索刺时,CHARINDEX在某些COLLATION中返回错误的结果(字符254)

加扎

总览

CHARINDEX 使用类似排序规则的序列时,偶尔会返回错误的值:

Latin1_General_CI_AS 

但可以使用如下排序规则:

SQL_Latin1_General_CP1_CI_AS

MS SQL Server 2008 R2和SQL Server 2016遇到此问题。

例子

假设数据库排序顺序为:

Latin1_General_CI_AS
  • print CHARINDEX( CHAR(254), 'Tþ' ) -返回正确的2
  • print CHARINDEX( CHAR(254), 'Th' ) -返回1表示错误
  • print CHARINDEX( CHAR(253), 'Th' ) -返回0正确
  • print CHARINDEX( CHAR(254) Collate SQL_Latin1_General_CP1_CI_AS, 'Thþ' Collate SQL_Latin1_General_CP1_CI_AS) -返回3是正确的
  • print CHARINDEX( CHAR(254) Collate Latin1_General_CI_AS, 'Thþ' Collate Latin1_General_CI_AS) -返回1表示错误

Latin1...排序顺序是否存在已知错误

马丁·史密斯

这不是SQL Server特有的。

在C#中

string.Compare("þ", "th", false, new System.Globalization.CultureInfo(1033))

返回0指示字符串比较相等。

或在记事本中单击下面的“全部替换”

在此处输入图片说明

造成

在此处输入图片说明

在不以“ SQL”开头的SQL Server排序规则中,使用Windows排序规则。

对于大多数地区的人(冰岛为例外),荆棘字符 þ扩展为th

迈克尔·S·卡普兰(Michael S. Kaplan)在这篇文章中提供了有关此特定案例的更多信息。每朵玫瑰都有它的味道该博客包含有关Windows排序规则的大量信息。扩展在这里更详细的描述

如果您不希望使用这些语义,则需要对所需的语义使用排序规则(可能是SQL或二进制)(可能通过显式collate子句)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在数组中搜索返回错误结果

通过在RIGHT()或SUBSTRING()中使用CHARINDEX()拆分字符串返回错误的结果

Elasticsearch:搜索简单的'a'字符时不返回结果

使用数字搜索时,Algolia浏览返回错误结果

Azure 搜索返回错误结果

在硬盘上搜索字符串,并返回所有结果,其中某些目录被忽略

在搜索结果中推广某些客户的广告

在搜索字段中输入零值时返回错误消息

strtotime 将错误结果返回给数组中的字符串

猫鼬搜索返回错误的结果

MySQL多列搜索返回错误结果

使用BeautifulSoup时,html在某些搜索结果中需要使用不同索引号的数据

在 angular 中找不到搜索结果时如何隐藏某些内容

PHP在文本文件中搜索字符串并在特定字符后返回结果

列表视图上的搜索过滤器在单击项目时返回错误结果

当涉及管道时,为什么在搜索字符串中具有可变扩展名的`findstr`会返回意外结果?

范围运算符返回错误结果的弹性搜索结果

搜索未返回结果时添加“无结果”消息

FUN(X [[i]],...)中的错误:带有刺的参数的无效“类型”(字符)

立即执行不返回预期结果以在整个表中搜索字符串

在MVC中的HTTPPOST之后返回搜索结果

在数组中搜索并返回多个结果

如果在将整数与字符串进行比较时返回错误的结果

无法在返回结果的函数中返回错误?

在C ++中从字符串中搜索并删除某些字符

解析解析结果时返回类型错误

搜索结果中的错误Android SQLite

下面弹性搜索查询中的错误结果

在搜索和滚动结果时快速在Tableview中获取索引超出范围错误