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]%'
- 也就是说,只查看字符串的第一个字符。
有什么区别
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]%'
- 也就是说,只查看字符串的第一个字符。