运营商之间
Between operator
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%';
我读到 between 运算符的输出包括 between 子句中提到的值(包括)。
这里的输出是
ABCD
D
这里不包括A,但包括D。我无法理解这种行为。有人可以解释一下吗?
这里是 sql fiddle link :- http://sqlfiddle.com/#!9/bf5cd5/1/0
您没有使用 like
,因此“%”被视为常规字符,您正在检索大于 'A%' 到 'D%'
的字符串
'A' < 'A%'
插入 'A%' 然后重试
也许这会带来您想要的结果
SELECT first
FROM timepass
WHERE first between 'A' and 'D'
如果按如下方式插入其他示例数据
insert into timepass values('A%');
现在执行查询
SELECT first
FROM timepass
WHERE first between 'A%' and 'D%'
那么你可能会明白 BETWEEN 在这里是如何工作的。在这种情况下,“%”不是通配符
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%';
我读到 between 运算符的输出包括 between 子句中提到的值(包括)。
这里的输出是
ABCD
D
这里不包括A,但包括D。我无法理解这种行为。有人可以解释一下吗?
这里是 sql fiddle link :- http://sqlfiddle.com/#!9/bf5cd5/1/0
您没有使用 like
,因此“%”被视为常规字符,您正在检索大于 'A%' 到 'D%'
'A' < 'A%'
插入 'A%' 然后重试
也许这会带来您想要的结果
SELECT first
FROM timepass
WHERE first between 'A' and 'D'
如果按如下方式插入其他示例数据
insert into timepass values('A%');
现在执行查询
SELECT first
FROM timepass
WHERE first between 'A%' and 'D%'
那么你可能会明白 BETWEEN 在这里是如何工作的。在这种情况下,“%”不是通配符