create table timepass
(
first varchar(50)
);
insert into timepass values('ABCD');
insert into timepass values('A');
insert into timepass values('Dx');
insert into timepass values('D');
SELECT first
FROM timepass
WHERE first BETWEEN 'A%' AND 'D%';
我读到运算符之间的输出包含了子句(包括)之间提到的值。
这里的输出是
ABCD
D
这里不包括A但包括D。我无法理解这种行为。有人可以解释一下吗?
这是sql小提琴链接: - http://sqlfiddle.com/#!9/bf5cd5/1/0
答案 0 :(得分:2)
您没有使用like
因此'%'被视为常规字符,您检索的字符串大于'A%',最多为'D%'
'A'< 'A%'
插入'A%'并重试
也许这会带来你想要的结果
SELECT first
FROM timepass
WHERE first between 'A' and 'D'
答案 1 :(得分:2)
如果您按如下方式插入其他样本数据
insert into timepass values('A%');
现在执行查询
SELECT first
FROM timepass
WHERE first between 'A%' and 'D%'
然后你可能会理解BETWEEN如何在这里工作。在这种情况下,'%'不是通配符