gpt4 book ai didi

sql - 范围通配符模式匹配行为与区分大小写的排序规则

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

使用 PATINDEX 和区分大小写的排序规则来搜索字符串中的大写字母,我注意到这没有产生所需的结果:

-- returns 1
SELECT PATINDEX('%[A-Z]%'
, 'abCde' COLLATE SQL_Latin1_General_Cp1_CS_AS);

但是,指定每个字母 A-Z 会:

-- returns 3
SELECT PATINDEX('%[ABCDEFGHIJKLMNOPQRSTUVWXYZ]%'
, 'abCde' COLLATE SQL_Latin1_General_Cp1_CS_AS);

我对第一种情况使用范围的理解是否正确?为什么会有这样的行为?

最佳答案

不幸的是,范围运算符有点有趣。从 A 到 Z 的字母范围是:

AbBcCdDeE...yYzZ

也就是说,小写字符紧邻其对应的大写字符之前。这也很有趣,因为如果您想同时处理大写和小写字符,在区分大小写的排序规则中,范围 A-Z 不包括小写 a。

<小时/>

我应该说,上面关于范围如何扩展的内容是基于我通常使用的排序规则。范围实际上是如何扩展的 collation dependent如果您可以找到一个排序规则,例如,所有大写字符都出现在所有小写字符之前,那么该范围将按您的预期工作。 (可能是二进制排序规则之一?)

关于sql - 范围通配符模式匹配行为与区分大小写的排序规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4212110/

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