2017-05-08 40 views
1
SQL> SELECT name 

FROM donor 

WHERE name BETWEEN J & R; 

NAME 

-- -- -- -- -- -- -- - 

Jennifer Ames 

Nancy Taylor 

应该出现的名字是Robert Brooks。但是Ro比R大,所以我不知道该怎么做。输出使用BETWEEN子句缺少名称SQL

回答

1

这应该让你有:

SELECT name 
FROM donor 
WHERE SUBSTR(NAME,1,1) BETWEEN 'J' AND 'R'; 

SUBSTR功能只比较名称的第一个字母。

下面是一个例子:

CREATE TABLE DONOR(
    NAME VARCHAR2(128) 
); 

INSERT INTO DONOR VALUES ('Jennifer Ames'); 
INSERT INTO DONOR VALUES ('Nancy Taylor'); 
INSERT INTO DONOR VALUES ('Robert Brooks'); 

SELECT name 
FROM donor 
WHERE SUBSTR(NAME,1,1) BETWEEN 'J' AND 'R'; 

结果:

NAME   
Jennifer Ames 
Nancy Taylor 
Robert Brooks 
+0

非常感谢alexgibbs –

2

你可以使用一个字母了字母表?

... between 'J' and 'S' 
+0

不,我必须在这里使用J和R. –

+1

@JBen - 为什么你**必须**使用J和R?罗杰所说的是非常有意义的。唯一的问题是如果你有一个名字完全是'S',因为它会选择那个,但否则这个建议确实**你需要的。如果你需要避免接受'S',那么你可以说'where name> ='J'和名字''S''。与“正确的”答案相比,如果你有一个'name'索引,这种方法会更快,因为使用'substr'意味着查询引擎**不能**使用索引。 – mathguy

+0

@mathguy网站上的说明声明不使用任何其他字母。 –