gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 13:41:09 25 4
gpt4 key购买 nike

概览

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) Collat​​e SQL_Latin1_General_CP1_CI_AS, 'Thþ' Collat​​e SQL_Latin1_General_CP1_CI_AS) -- 返回正确的 3
  • print CHARINDEX( CHAR(254) Collat​​e Latin1_General_CI_AS, 'Thþ' Collat​​e Latin1_General_CI_AS) -- 返回错误的 1

Latin1... 归类序列是否存在已知错误?

最佳答案

这不是 SQL Server 特有的内容。

在 C# 中

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

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

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

enter image description here

导致

enter image description here

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

对于大多数地区(冰岛除外)的人来说,thorn character þ 扩展为 th

迈克尔·卡普兰 (Michael S. Kaplan) 的这篇文章中提供了有关此特定案例的更多信息 Every rose has it's Þ.... .该博客包含大量有关 Windows 排序规则的信息。扩展是 described in more detail here .

如果您不想要这些语义,您需要使用具有您确实想要的语义的排序规则(可能是 SQL 或二进制)(可能通过显式 collat​​e 子句)。

关于sql - 搜索 thorn(字符 254)时,CHARINDEX 在某些 COLLATION 中返回错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40123029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com