具有字符范围和区分大小写列的SQL Server LIKE运算符

敬一

您能否解释一下为什么以下查询返回不满足LIKE条件的行。表中的列具有区分大小写的排序规则,因此查询不应返回任何内容。

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”条件下使用范围时,才会出现此错误。当我将[bd]更改为[bcd]时,一切正常。

它是数据库引擎中的错误吗?

我在Windows NT 6.1(内部版本7601:Service Pack 1)上使用Microsoft SQL Server 2008(SP3)-10.0.5846.0(X64)企业版(64位)

马丁·史密斯

不,这不是错误。

模式语法中的范围不是正则表达式。它在归类排序顺序下定义了一个范围。

这些归类排序AaBbCcDd...YyZz(大写和小写混合),所以这是预期的结果。

二进制排序规则排序AB .... YZ .... ab ... yz(大写字母和小写字母分开),这就是为什么它可以正确地工作的原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

LIKE运算符是否对MSSQL Server区分大小写?

SQL Server:使用like运算符替换值

SQL Server中的LIKE运算符无法正常工作

如何使%like%运算符不区分大小写

如何在 SQL Server 中使用带有 like 运算符的 nchar

SQL Server 2012中带有'AND'运算符的'LIKE'子句

Like 运算符在 SQL Server 2019 中不起作用

在链接的 SQL Server 表上使用参数访问查询 Like 运算符

(Microsoft SQL Server Management Studio 17)AND / LIKE运算符显示为灰色

值内的特殊字符不适用于like运算符,而相同字符可用于SQL Server中的=运算符

SQL Server减去运算符问题

SQL Server中的NOT vs <>运算符

SQL LIKE运算符和通配符

SQL - 运算符 LIKE 返回 '%' 或 null

带有空字符串 (%''%) 的 SQL Server LIKE 运算符是否匹配 VARCHAR 列中的所有非 NULL 值?

像SQL Server中的运算符和尾随空格

MS SQL Server 上是否有用于动态列表或多个字符串集的 LIKE 运算符?

SQL Server 2019 - 使用扩展运算符构建 JSON

在SQL Server中的运算符中不起作用

SQL Server中的无符号右移'>>>'运算符

SQL Server中的R:$运算符对原子向量无效

SQL Server 存储 pProcedure with is null and equals 运算符

SQL-Server:在where运算符中使用if

试图通过运算符比较SQL Server中的时间

IN运算符中的Postgres不区分大小写?

nginx不区分大小写等于运算符

SQL Server-LIKE运算符在搜索部分字符串而不是整个字符串时起作用

在 IN 运算符内部有一个 Like 运算符的可能性

具有变量的DB2 LIKE运算符