好的,正如标题所暗示的那样。
将REPLACE
char(185) 上的函数用于临时表中的数据时,也会删除一个 ("1")。
SQL SERVER 2008R2
UNICODE 数据
数据库整理 - 整理 SQL_Latin1_General_CP1_CS_AS Tempdb 有默认值
我可以提供的任何其他可能有用的详细信息,请告诉我。
好的,正如标题所暗示的那样。
将REPLACE
char(185) 上的函数用于临时表中的数据时,也会删除一个 ("1")。
SQL SERVER 2008R2
UNICODE 数据
数据库整理 - 整理 SQL_Latin1_General_CP1_CS_AS Tempdb 有默认值
我可以提供的任何其他可能有用的详细信息,请告诉我。
CHAR(185)
, 是 VARCHAR 数据并使用 8 位代码页,可以是不同的字符,具体取决于所使用的代码页(使用该CHAR()
函数时由当前数据库的排序规则决定)。在许多代码页中,包括常见的 Windows-1252 (Latin1_General),该字符是一个上标 1(即“ 1 ”)。根据所使用的排序规则/代码页,此字符可能具有映射到常规“1”的“最适合”。此外,在使用 Windows 排序规则时,区分大小写会影响相同字符的下标、上标和常规版本之间的匹配结果(严重!请参见下面的示例)。这也涵盖
NVARCHAR
/Unicode 数据(包括VARCHAR
从 SQL Server 2019 开始的 UTF-8)。当需要匹配特定字符时,您需要使用二进制排序规则(即
_BIN2
在 SQL Server 2005 或更早版本上以 unless 结尾的排序规则,在这种情况下,只有_BIN
排序规则可用)。如上所述,Unicode 数据(无论归类类型如何)与
VARCHAR
用于 Windows 归类的数据的工作方式相同(因为两种情况都使用相同的 Unicode 规则):如果有人想知道 - 问题是整理。当我写这个问题时,我没有意识到我使用的#temp 表的排序规则与我正在使用的数据库的默认排序规则不同。这是一个简单的解决方案,老实说,我在带着问题来到这里之前就应该想到这一点。