LIKE '[A-D]%' 和有什么区别?在 'A' 和 'D' 之间;在 SQL 服务器中

What is the difference between LIKE '[A-D]%' ; and BETWEEN 'A' AND 'D' ; in SQL Server

有什么区别

SELECT *
FROM table1
WHERE name LIKE ' [A-D] %' ;

BETWEEN 'A' AND 'D'

SQL服务器?

假设您说的是 SQL 服务器,而不是 MySQL.

SQL 服务器对支持字符范围的 LIKE 进行了有限的扩展。所以,您正在比较:

where name like '[A-D]%' 
where name between 'A' and 'D'

区别很简单。以 "D" 开头的长于 "D" 的名称匹配第一个条件,但不匹配第二个条件。例如,'Dionysis' 和 'Dracula' 匹配 like 但不匹配 between

等效比较为:

where name >= 'A' and name < 'E'

LIKE '[A-D]%' 检查字符串的第一个字符是 A、B、C 还是 D。 BETWEEN 'A' AND 'D' 检查字符串在排序时是否落在 'A' 和 'D' 之间。对于单个字符的字符串,它们将表现相同(取决于排序规则)。

LIKE '[A-D]',没有通配符,在比较单个字符时等价于 BETWEEN 'A' AND 'D'

LEFT(textcolumn, 1) BETWEEN 'A' AND 'D' 等同于 textcolumn LIKE '[A-D]%' - 也就是说,只查看字符串的第一个字符。