2013-04-24 64 views
-2

請幫我使用Oracle數據庫SQL Oracle錯誤 - 作業任務

PROMPT解決以下問題的SQL: 列表按升序PK序列中的倉庫表中的所有列。 •其中地址RD或ST結束只列出行

SELECT * 
FROM warehouse 
WHERE address ='% rd' 
OR WHERE address ='% st', 
ORDER BY whid ASC; 

錯誤消息:

OR WHERE地址= '%ST',*

錯誤在第4行:ORA- 00936:缺少表達

+0

額外的逗號後第二次在那裏,只需要一個'where' – 2013-04-24 00:18:47

回答

1

你不需要第二個WHERE,也應該刪除逗號。另外,您可能希望在地址前有LIKE,並且您可能不想擁有空格。

我想你的意思是這樣的:

SELECT * 
FROM warehouse 
WHERE address LIKE '%rd' 
OR address LIKE '%st' 
ORDER BY whid ASC; 

或者,你可能有更聰明:

-- You don't say this explicitly, but I think it a good idea to make sure that 
-- you are searching for rd and st in the right tense. That is why I have 'lower' 
SELECT * 
FROM warehouse 
WHERE lower(substr(address,-2,2)) in ('rd', 'st') 
ORDER BY whid ASC; 
+0

有沒有辦法將UPPER或LOWER屬性添加到第一個示例? – 2013-04-24 00:27:02

+0

@DannyMahoney你需要有上限或下限都圍繞'address'的 – cwallenpoole 2013-04-24 01:42:52

+0

SELECT * FROM 倉庫 WHERE UPPER(地址= '%RD') 或上(地址= '%ST') ORDER BY whid ASC; 創建錯誤 WHERE(UPPER(地址= '%RD')在3線 * 錯誤: ORA-00907:錯過右括號 – 2013-04-24 01:47:54

0

擺脫第二WHERE的,使用LIKE代替=和嘗試[R揮動%角色後的空間。

SELECT * 
FROM warehouse 
WHERE address LIKE '%rd' 
OR address LIKE '%st' 
ORDER BY whid ASC; 
+0

這就是我本來和仍然沒有工作。 [CODE] SELECT * FROM 倉庫 WHERE地址= '%RD' OR地址= '%ST' ORDER BY whid ASC; [/ CODE] 顯示OK 0行,但是當我做到以下幾點: SELECT * FROM WAREHOUE 它的工作原理,因此數據有 – 2013-04-24 00:12:55

+0

你得到一個錯誤? – 2013-04-24 00:13:30

+0

沒有錯誤,但數據庫中多次出現'%st'和'%rd'語法 – 2013-04-24 00:19:43

1

擺脫第二WHERE聲明,並改變你的等價語句LIKE

SELECT * 
FROM warehouse 
WHERE address LIKE '% rd' 
OR address LIKE '% st' 
ORDER BY whid ASC; 

如果你有等效聲明那裏,你將只匹配正好等於% rd% st字符串。

+0

SELECT * 「FROM倉庫 WHERE地址LIKE '%RD' OR address like'%st' ORDER BY whid ASC;' 顯示OK 0 rows – 2013-04-24 00:16:48

0

使用like關鍵字:

SELECT * FROM warehouse WHERE address LIKE '%RD' OR address LIKE '%ST' ORDER BY whid ASC; 
+0

OK。0 rows selected。 – 2013-04-24 00:18:26