gpt4 book ai didi

sql-server - 使用 SC 排序规则的 SQL Server Unicode 查询

转载 作者:行者123 更新时间:2023-12-02 21:16:39 24 4
gpt4 key购买 nike

在 SQL Server 2012 中,我有一个包含 nvarchar 列的表,该列的排序规则为 Latin1_General_100_CI_AS_SC,该表应该支持 unicode 代理对字符或补充字符。

  1. 当我运行此查询时:

    select KeyValue from terms where KeyValue = N'➰'

    (上面是 Unicode SC)
    上面是一个大循环字符,代码为 10160 (x27B0)
    结果是数百个外观不同的单字符条目,尽管它们都有不同的 UTF-16 代码点。这是由于整理吗?为什么没有完全匹配?

    编辑:我现在认为这是由于整理所致。 UTF-16 范围内似乎有一组“未定义”字符,超过 1733 个字符,并且此排序规则将它们视为相同。不过,代码高于 65535 的字符被视为唯一,并且这些查询会返回完全匹配的结果。

  2. 下面的两个查询有不同的结果:

    select KeyValue from terms where KeyValue = N'π'

    返回 3 行:π 和 ℼ 和 ᴨ

    select KeyValue from terms where KeyValue LIKE N'π'

    返回 2 行:π 和 ℼ

    这是为什么?

  3. 这是最奇怪的。此查询:

    select KeyValue from terms where KeyValue like N'➰%'

    返回表中的几乎所有记录,其中包含许多多字符常规拉丁字符集术语,例如“8w”或“apple”。没有被退回的90%都是以“æ”开头的。发生什么事了?

注意:为了提供一些背景信息,这些都是维基百科文章标题,而不是随机字符串。

最佳答案

SQL Server 和 tempdb 也有自己的排序规则,它们可能与数据库或列的排序规则不同。虽然应该为字 rune 字指定列或数据库的默认排序规则,但上述(可能过于简化)T-SQL 示例可能会错误表述/未揭示真正的问题。例如,为了简单起见,可以省略 ORDER BY 子句。当上述语句显式使用 https://msdn.microsoft.com/en-us/library/ms184391.aspx 时,是否返回预期结果('整理 Latin1_General_100_CI_AS_SC')?

关于sql-server - 使用 SC 排序规则的 SQL Server Unicode 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31214088/

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