相关疑难解决方法(0)

SQL Server通配符字符范围(例如[AD])如何使用区分大小写的排序规则?

任何人都可以解释通配符字符范围(例如[AD])如何与区分大小写的排序规则一起使用的规则吗?

我会想到以下几点

WHERE CharColumn LIKE '[A-D]%';
Run Code Online (Sandbox Code Playgroud)

只返回以大写字母A,B,C或D开头的记录,并排除以小写字母a,b,c或d开头的记录.

然而,实际上,它似乎返回以大写字母A开头的记录,但也记录以B或b,C或c和D或d开头的记录.这就像只有范围的第一个字符区分大小写,范围中的其余字符不区分大小写.

另一方面,以下

WHERE CharColumn LIKE '[ABCD]%';
Run Code Online (Sandbox Code Playgroud)

仅返回与上壳体A,B,C或D.然而,我会想到开始记录[AD]将相当于[ABCD].

我在SQL Server 2005和SQL Server 2008 R2中得到了相同的结果.

示例:(
插入使用SQL Server 2008行构造函数编写的语句用于紧凑性.如果为每个值赋予其自己的insert语句,则脚本将在SQL Server 2005中运行)

CREATE TABLE #TEST_LIKE_Patterns
    ( 
        ID INT IDENTITY(1,1),
        CharColumn VARCHAR(100) COLLATE Latin1_General_CS_AS
    );

--------------
INSERT INTO #TEST_LIKE_Patterns (CharColumn)
VALUES ('aaa'), ('aAA'), ('AAA'), ('Aaa');
--------------    
INSERT INTO #TEST_LIKE_Patterns (CharColumn)
VALUES ('bbb'), ('bBB'), ('BBB'), ('Bbb');
--------------
INSERT INTO #TEST_LIKE_Patterns (CharColumn)
VALUES ('ccc'), ('cCC'), ('CCC'), ('Ccc');
--------------    
INSERT INTO #TEST_LIKE_Patterns (CharColumn)
VALUES ('ddd'), ('dDD'), ('DDD'), ('Ddd');
-------------- …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

9
推荐指数
2
解决办法
1万
查看次数

标签 统计

sql ×1

sql-server ×1

t-sql ×1