2017-05-08 17 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網站上的說明聲明不使用任何其他字母。 –