你能为我解释一下为什么以下查询会返回不符合LIKE条件的行。表中的列具有区分大小写的排序规则,因此查询不应该返回任何内容。
任何其他区分大小写的排序(如Latin1_General_100_CS_AS,Polish_100_CS_AS,Modern_Spanish_100_CS_AS)也无法正常工作。据我所知,只有二进制排序集合(Latin1_General_100_BIN2,Modern_Spanish_100_BIN2)可以正常工作。
这个错误仅在使用LIKE条件中的范围时存在。当我将[b-d]更改为[bcd]时,一切正常。
这是数据库引擎的一个bug吗?
我使用的是Microsoft SQL Server 2008(SP3)-10.0.5846.0(X64)企业版(64位)在Windows NT 6.1(Build 7601:Service Pack 1)上。
CREATE TABLE #temp (col CHAR COLLATE SQL_Latin1_General_CP1_CS_AS);
INSERT INTO #temp VALUES ('A'), ('B'), ('C'), ('D'), ('E');
SELECT * FROM #temp WHERE col LIKE '[b-d]';
任何其他区分大小写的排序(如Latin1_General_100_CS_AS,Polish_100_CS_AS,Modern_Spanish_100_CS_AS)也无法正常工作。据我所知,只有二进制排序集合(Latin1_General_100_BIN2,Modern_Spanish_100_BIN2)可以正常工作。
这个错误仅在使用LIKE条件中的范围时存在。当我将[b-d]更改为[bcd]时,一切正常。
这是数据库引擎的一个bug吗?
我使用的是Microsoft SQL Server 2008(SP3)-10.0.5846.0(X64)企业版(64位)在Windows NT 6.1(Build 7601:Service Pack 1)上。